我正在尝试以编程方式设置某些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/

10-08 23:41