更新時間:2022-08-03 11:07:01 來源:動力節點 瀏覽4951次
如何在Java中刪除文件夾下的所有文件?動力節點小編來告訴大家。
來自 Apache Commons IO的FileUtils類提供了幾個方便的文件操作實用程序。您可以使用該FileUtils.cleanDirectory()方法遞歸刪除目錄中的所有文件和子目錄,而不刪除目錄本身。
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
File directory = new File("/path/to/dir");
FileUtils.cleanDirectory(directory);
}
}
要遞歸刪除目錄及其中的所有內容,您可以使用該FileUtils.deleteDirectory()方法。
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
File directory = new File("/path/to/dir");
FileUtils.deleteDirectory(directory);
}
}
或者,您可以使用該FileUtils.forceDelete()方法刪除一個目錄和所有子目錄。
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
File directory = new File("/path/to/dir");
FileUtils.forceDelete(directory);
}
}
該File.delete()方法刪除由指定路徑名表示的文件或目錄。有許多方法可以有條件地刪除使用它的目錄中的文件和子目錄。
例如,以下解決方案僅刪除主目錄中的文件,所有子目錄保持不變。
import java.io.File;
import java.util.Objects;
public class Main {
public static void main(String[] args) {
File directory = new File("/path/to/dir");
for (File file: Objects.requireNonNull(directory.listFiles())) {
if (!file.isDirectory()) {
file.delete();
}
}
}
}
如果您使用 Java 8 或更高版本,則可以使用:
import java.io.File;
import java.util.Arrays;
import java.util.Objects;
import java.util.function.Predicate;
public class Main {
public static void deleteDirectory(File directory) {
Arrays.stream(Objects.requireNonNull(directory.listFiles()))
.filter(Predicate.not(File::isDirectory))
.forEach(File::delete);
}
public static void main(String[] args) {
File directory = new File("/path/to/dir");
deleteDirectory(directory);
}
}
您可以輕松擴展解決方案以遞歸刪除目錄中的所有文件和子目錄。請注意,File.delete()當且僅當目錄為空時,您可以使用該方法刪除目錄。
import java.io.File;
import java.util.Objects;
public class Main {
public static void deleteDirectory(File directory) {
for (File file: Objects.requireNonNull(directory.listFiles())) {
if (file.isDirectory()) {
deleteDirectory(file);
} else {
file.delete();
}
}
}
public static void main(String[] args) {
File directory = new File("/path/to/dir");
deleteDirectory(directory);
}
}
這是使用 Stream API 的版本。它利用該Files.walk()方法并刪除目錄中的所有文件和子目錄以及目錄本身。
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Comparator;
public class Main {
public static void deleteDirectory(Path directory) throws IOException {
Files.walk(directory)
.sorted(Comparator.reverseOrder())
.map(Path::toFile)
.forEach(File::delete);
}
public static void main(String[] args) throws IOException {
Path directory = Path.of("/path/to/dir");
deleteDirectory(directory);
}
}
如果您需要從目錄及其所有子目錄中刪除“僅文件”,您可以執行以下操作:
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
public static void deleteDirectory(File directory) throws IOException {
Files.walk(directory.toPath())
.filter(Files::isRegularFile)
.map(Path::toFile)
.forEach(File::delete);
}
public static void main(String[] args) throws IOException {
File directory = new File("/path/to/dir");
deleteDirectory(directory);
}
}
以上就是關于“Java刪除文件夾下所有文件的方法”介紹,希望對大家的學習能夠有所幫助哦。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習