2013-08-14 6 views
0

Я пытаюсь программно установить теги ID3 некоторых mp3. После отказа от jaudiotagger я нашел библиотеку MyID3 http://www.fightingquaker.com/myid3/Несовместимые типы Обязательно: Файл, Найдено: void

Я никоим образом не опытный программист на Java, но у меня есть некоторые знания ООП. Мне удалось дойти до класса, все работает хорошо, за исключением странной ошибки, которую я не могу понять. Мой класс:

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(); 
        } 

     } 



    } 

И ошибка, которую я получаю на линии:. File целевой_адрес = новый MyID3() писать (ЦСИ, ДСТ, src_set, метаданные);

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

Странная часть является то, что распечатки сказать, что первый параметр функции записи является файлом ... Я не понимаю, почему компилятор не хочет принимать SRC в качестве переменного файла.

Большое спасибо за вашу помощь

+0

есть недостающий '}' для закрытия класса –

ответ

1

, возвращающие новый объект MyID3.

File dst = new MyID3(); 


Это, однако, будет возвращать то, что запись() возвращает метод. В этом случае пусто. (Я предполагаю)

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]); 
+0

Merci René Я пробовал это перед публикацией, но нет конструктора MyID3, я получаю ошибку: C: \ ID3> javac -c p.; jakarta-regexp-1.5.jar; myid3.jar lrsetid3.java lrsetid3.java:38: ошибка: несовместимые типы Файл dst = new MyID3(); ^ required: Файл found: MyID3 1 ошибка – MMT

+0

Произошла проводка stackoverflow, я хочу опубликовать файл MyID3.java, но я не могу, новичок в этом, и я не могу найти тег кода, это ? – MMT

+0

Я забыл упомянуть, что эта строка MusicMetadataSet src_set = new MyID3(). Read (listOfFiles [i]); хорошо работает – MMT

Смежные вопросы