0

を使用していくつかの MP3 ファイルを別のフォルダに移動しようとしていますFile.renameTo()が、理由がわかりません。

私が間違っていることを教えてください。

File songsFolder = new File("songs");
File[] songsList = songsFolder.listFiles();

for (int i = 0; i < allSongs.size(); i++) {
    //allSongs is an ArrayList defined earlier
    File music = (File) songsList[i];
    FileInputStream fileMusic = new FileInputStream(music);
    int size = (int) music.length();
    fileMusic.skip(size - 128);
    byte[] last128 = new byte[128];
    fileMusic.read(last128);
    String id3 = new String(last128);
    String tag = id3.substring(0, 3);

    if (musicsList[i].isFile()) {
        File afile = songsList[i];
        if (afile.renameTo(new File("songs/" + id3.substring(33, 62).trim() + "/" + songsList[i].getName()))) {
            System.out.println("File moved successfully!");
        } else {
            System.out.println("File failed to move!");
        }
    }
}

出力は次のとおりです。

File failed to move!
File failed to move!
File failed to move!
File failed to move!
4

2 に答える 2

0

FileInputStream関連ファイルの名前を変更する前に、sを閉じる必要があります。通常、このようなリソースは、使い終わったら閉じる必要があります。

さらに、ターゲット ディレクトリが実際に存在するかどうかを確認する必要があります。

Java 7 でプログラミングしている場合は、新しい java.nio.file API を試す必要があります。これにより、 を返すだけでなく、理由について詳しく説明する例外をスローする move メソッドが提供されますfalse

于 2013-08-28T11:40:18.797 に答える