我正在尝试以编程方式设置某些mp3的ID3标签。放弃了jaudiotagger之后,我发现了MyID3库http://www.fightingquaker.com/myid3/
我绝对不是一位经验丰富的Java程序员,但是我对OOP有一定的了解。
我设法编写了一个类,一切正常,除了一个我不明白的奇怪错误以外。
我的课是:
import org.cmc.music.myid3.*;
import org.cmc.music.metadata.*;
import java.io.*;
import java.lang.*;
/**
* The HelloWorldApp class implements an application that
* simply prints "Hello World!" to standard output.
*/
class lrsetid3 {
public static void main(String[] args) {
String files;
File inputfolder = new File("c:\\ID3\\input");
File[] listOfFiles = inputfolder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
// files = listOfFiles[i].getName();
}
try {
MusicMetadataSet src_set = new MyID3().read(listOfFiles[i]);
IMusicMetadata metadata = src_set.getSimplified();
String artist = metadata.getArtist();
metadata.setArtist("Bob Marley");
System.out.println(listOfFiles[i].getName());
File src = new File ("c:\\ID3\\input" + listOfFiles[i].getName());
System.out.println(listOfFiles[i].isFile());
System.out.println(listOfFiles[i].exists());
File dst = new MyID3().write(src, dst, src_set, metadata);
// System.out.println("Artist" + artist); // Display the string.
}
catch (Exception e){
e.printStackTrace();
}
}
}
我得到的错误就在网上:
文件dst = new MyID3()。write(src,dst,src_set,元数据);
lrsetid3.java:37: error: incompatible types
File dst = new MyID3().write(src, dst, src_set, metadata);
^
required: File
found: void
1 error
奇怪的是,打印输出说写函数的第一个参数是File ...我不明白为什么编译器不想接受src作为File变量。
非常感谢您的帮助
最佳答案
这将返回一个新的MyID3对象。
File dst = new MyID3();
但是,这将返回write()方法返回的内容。在这种情况下无效。 (我相信)
File dst = new MyID3().write(src, dst, src_set, metadata);
要解决此问题,请执行以下操作:
File dst = new MyID3();
dst.write(src, dst, src_set, metadata);
当然,这条规则也适用于此行:
MusicMetadataSet src_set = new MyID3().read(listOfFiles[i]);
关于java - 不兼容的类型必需:文件,找到:无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18226100/