不兼容的类型必需:File,Found:void

时间:2013-08-14 07:55:37

标签: java pojo

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

    lrsetid3.java:37: error: incompatible types
                                        File dst = new MyID3().write(src, dst, src_set, metadata);
                                                                    ^
  required: File
  found:    void
1 error

奇怪的是,打印输出说write函数的第一个参数是File ...我不明白为什么编译器不想接受src作为File变量。

非常感谢你的帮助

1 个答案:

答案 0 :(得分:1)

将返回一个新的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]);