java中刪除文件/文件夾的3種方法示例小結(jié)
更新時間:2023年10月10日 11:41:37 作者:程序修理員
這篇文章主要介紹了java中刪除文件/文件夾的3種方法示例小結(jié),第一種是通過io刪除文件,第二種是通過Files.walk刪除文件,第三種是通過 Files.walkFileTree刪除文件,本文結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
java中刪除文件/文件夾的3種方法
1、通過io刪除文件
/**
* 通過遞歸逐層刪除文件信息
*
* @param filePath
*/
public static void deleteFileByIO(String filePath) {
File file = new File(filePath);
File[] list = file.listFiles();
if (list != null) {
for (File temp : list) {
deleteFileByIO(temp.getAbsolutePath());
}
}
file.delete();
}2、通過Files.walk刪除文件
/**
* 使用Files.walk遍歷文件夾(包含子文件夾及子其文件),遍歷結(jié)果是一個Stream
* 對每一個遍歷出來的結(jié)果進行處理,調(diào)用Files.delete就可以了。
*
* @param filePath
* @throws IOException
*/
public static void deleteFileByStream(String filePath) throws IOException {
Path path = Paths.get(filePath);
try (Stream<Path> walk = Files.walk(path)) {
walk.sorted(Comparator.reverseOrder())
.forEach(FileUtil::deleteDirectoryStream);
// FileUtil為類名
}
}
private static void deleteDirectoryStream(Path path) {
try {
Files.delete(path);
} catch (IOException e) {
e.printStackTrace();
}
}3、通過 Files.walkFileTree刪除文件
/**
* 使用walkFileTree方法遍歷整個文件目錄樹,使用FileVisitor處理遍歷出來的每一項文件或文件夾
* FileVisitor的visitFile方法用來處理遍歷結(jié)果中的“文件”,所以我們可以在這個方法里面刪除文件
* @param filePath
* @throws IOException
*/
public static void deleteFileByWalkFileTree(String filePath) throws IOException {
Path path = Paths.get(filePath);
Files.walkFileTree(path,
new SimpleFileVisitor<Path>() {
// 先去遍歷刪除文件
@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attrs) throws IOException {
Files.delete(file);
System.out.printf("文件被刪除 : %s%n", file);
return FileVisitResult.CONTINUE;
}
// 再去遍歷刪除目錄
@Override
public FileVisitResult postVisitDirectory(Path dir,
IOException exc) throws IOException {
Files.delete(dir);
System.out.printf("文件夾被刪除: %s%n", dir);
return FileVisitResult.CONTINUE;
}
}
);
}擴展:
java刪除文件或目錄的三種方法
一、所用工具
傳統(tǒng)刪除是利用IO流,本文利用NIO流實現(xiàn)。
二、常見幾種方法
1.傳統(tǒng)IO流
代碼如下(示例):
//調(diào)用
File file = new File("E:/河南省鄉(xiāng)鎮(zhèn)點/GIS/");
deleteFile(file);
//刪除文件夾及其文件
public static void deleteFile(File file){
//獲取目錄下子文件
File[] files = file.listFiles();
//遍歷該目錄下的文件對象
for (File f : files) {
//打印文件名
System.out.println("文件名:" + f.getName());
//文件刪除
f.delete();
}
boolean delete = file.delete();
System.out.println(delete);
}2.強制刪除(如若一次刪除失敗,進行多次強制刪除即可)
代碼如下(示例):
//調(diào)用
File file = new File("E:/河南省鄉(xiāng)鎮(zhèn)點/GIS/");
forceDelete(file);
//強制刪除
public static boolean forceDelete(File file) {
boolean result = file.delete();
int tryCount = 0;
while (!result && tryCount++ < 10) {
System.gc(); //回收資源
result = file.delete();
}
return result;
}3.利用NIO流
代碼如下(示例):
Path path= Paths.get("E:\\河南省鄉(xiāng)鎮(zhèn)點\\GIS");
Files.walkFileTree(path,new SimpleFileVisitor<>(){
//遍歷刪除文件
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
Files.delete(file);
return FileVisitResult.CONTINUE;
}
//遍歷刪除目錄
public FileVisitResult postVisitDirectory(Path dir,IOException exc) throws IOException{
Files.delete(dir);
return FileVisitResult.CONTINUE;
}
});總結(jié)
利用NIO流的好處:
1.如果刪除失敗,可以給出錯誤的具體原因;
2.代碼不多,效率高。
到此這篇關(guān)于java中刪除文件/文件夾的3種方法的文章就介紹到這了,更多相關(guān)java刪除文件/文件夾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot中實時監(jiān)控Redis命令流的實現(xiàn)
在Redis的日常使用和調(diào)試中,監(jiān)控命令流有助于我們更好地理解 Redis的工作狀態(tài),Redis提供了MONITOR命令,可以實時輸出Redis中所有客戶端的命令請求,本文將介紹如何使用Jedis實現(xiàn)這一功能,并對比telnet實現(xiàn)MONITOR機制的工作方式,需要的朋友可以參考下2024-11-11

