Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Scala中使用mp3agic设置和保存mp3文件的元数据_Scala_Mp3_Mp3agic - Fatal编程技术网

如何在Scala中使用mp3agic设置和保存mp3文件的元数据

如何在Scala中使用mp3agic设置和保存mp3文件的元数据,scala,mp3,mp3agic,Scala,Mp3,Mp3agic,我正试着写我自己的mp3播放器。我能够使用mp3agic从mp3文件中读取元数据,因此现在我想修改它。Mp3agic显示(在标题设置ID3v2字段值下),您可以通过修改标记,然后调用mp3文件上的save来完成此操作 我调用save时出错。这和另一篇文章的错误是一样的 代码 输出 false true false 1973 sbt 我可以在mp3文件上设置新的元数据,但我必须创建一个新标记,并将旧标记中的所有数据复制到该文件上,然后用新标记保存该文件 import java.nio.file.

我正试着写我自己的mp3播放器。我能够使用mp3agic从mp3文件中读取元数据,因此现在我想修改它。Mp3agic显示(在标题设置ID3v2字段值下),您可以通过修改标记,然后调用mp3文件上的save来完成此操作

我调用save时出错。这和另一篇文章的错误是一样的

代码

输出

false
true
false
1973
sbt


我可以在mp3文件上设置新的元数据,但我必须创建一个新标记,并将旧标记中的所有数据复制到该文件上,然后用新标记保存该文件

import java.nio.file.Paths
import com.mpatric.mp3agic.Mp3File

object Example extends App {
  Paths.get("content").resolve("raw").toFile.listFiles.toList
    .find(f => f.isFile && f.getName.endsWith(".mp3"))
    .foreach { file =>
      val mp3 = new Mp3File(file)
      println(mp3.hasId3v1Tag)
      println(mp3.hasId3v2Tag)
      println(mp3.hasCustomTag)

      val tag = mp3.getId3v2Tag
      println(tag.getYear)
      tag.setComment("Cool song.")
      mp3.save(file.getParentFile.toPath.resolve("x.mp3").toFile.getAbsolutePath)
    }
}
false
true
false
1973
scalaVersion := "2.13.1"
libraryDependencies += "com.mpatric" % "mp3agic" % "0.9.1"