无法将MP3文件移动到其他文件夹

时间:2013-08-28 11:26:47

标签: java file-rename

我正在尝试使用File.renameTo()将一些MP3文件移动到不同的文件夹,但是它一直无法正常工作我不知道为什么。

你能告诉我我做错了吗?

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!

2 个答案:

答案 0 :(得分:1)

目录"songs/" + id3.substring(33, 62).trim()是否已存在? File.renameTo()不会为您创建目录。

尝试这样的事情:

File afile = songsList[i];
File newDir = new File("songs", id3.substring(33, 62).trim());
newDir.mkdirs();
File newName = new File(newDir, afile.getName());
afile.renameTo(newName);

答案 1 :(得分:0)

在尝试重命名关联文件之前,您必须关闭FileInputStream。一般情况下,你应该关闭这些资源。

此外,您应该检查目标目录是否确实存在。

如果您使用Java 7进行编程,则应尝试使用新的java.nio.file API。这提供了一种移动方法,可以抛出异常,告诉您更多有关原因的信息,而不仅仅是返回false