我很新的遞歸和Java文件操作,我想編寫一個程序來複制所有一類的文件中。目錄及其所有子目錄到該程序所在的目錄不過,我不斷收到一個IOException:因爲它正由另一個進程使用 進程無法訪問文件。 我的遞歸代碼如下:從一個目錄複製一個類型的所有文件拋出錯誤使用一個文件遞歸
private ArrayList<File> addSongList(String dir) {
ArrayList<File> songsToAdd = new ArrayList<File>();
File currentFolder = new File(dir);
File[] files = currentFolder.listFiles();
for (int i = 0; i < files.length; i++)
if (files[i].getName().contains(".mp3") || files[i].getName().contains(".wma"))
songsToAdd.add(files[i]);
else if (files[i].isDirectory())
songsToAdd.addAll(addSongList(dir + "/" + files[i].getName()));
return songsToAdd;
}
基本上不用通過所有原dir變量的目錄和子目錄,並增加了所有.MP3和.wav文件到一個ArrayList(songsToAdd)。此方法在此稱爲:
ArrayList<File> Songs = addSongList(dir);
String finalPath = new File("").getAbsolutePath();
for(int i = 0; i < Songs.size(); i++){
try {
Files.copy(Songs.get(i).toPath(), new File(finalPath).toPath(), StandardCopyOption.REPLACE_EXISTING);
System.out.println("Copied " + Songs.get(i).getName() + " to " + finalPath);
} catch (IOException arg0) {
// TODO Auto-generated catch block
arg0.printStackTrace();
}
}
System.out.println("Copy Complete!");
由動作監聽器。我無法弄清楚爲什麼它會拋出這個錯誤。
太謝謝你了!這很好用! – Ranger645