方法一:
public static void deleteFiles(File srcFile) {
if (srcFile.exists()) {
//存放檔案夾
LinkedList<File> directories = new LinkedList<>();
ArrayList<File> directoryList = new ArrayList<>();
if (srcFile.isDirectory()) {
directories.add(srcFile);
} else {
srcFile.delete();
}
while (directories.size() > 0) {
File[] files = directories.removeFirst().listFiles();
if (files != null) {
for (File f : files) {
if (f.isDirectory()) {
directories.add(f);
directoryList.add(f);
} else {
f.delete();
}
}
}
}
//這時所有非檔案夾都删光了,可以直接删檔案夾了(注意從後往前周遊)
for (int j = directoryList.size() - 1; j >= 0; j--) {
directoryList.get(j).delete();
}
}
}
方法二: 用do…while循環
public static void deleteFiles(File srcFile) {
if (srcFile.exists()) {
//存放檔案夾
LinkedList<File> directories = new LinkedList<>();
ArrayList<File> directoryList = new ArrayList<>();
do {
File[] files = directories.size() > 0 ? directories.removeFirst().listFiles() : new File[]{srcFile};
if (files != null) {
for (File f : files) {
if (f.isDirectory()) {
directories.add(f);
directoryList.add(f);
} else {
f.delete();
}
}
}
} while (directories.size() > 0);
//這時所有非檔案夾都删光了,可以直接删檔案夾了(注意從後往前周遊)
for (int i = directoryList.size() - 1; i >= 0; i--) {
directoryList.get(i).delete();
}
}
}