1. 程式人生 > >java 刪除指定資料夾 以及檔案下下面的所有檔案

java 刪除指定資料夾 以及檔案下下面的所有檔案

java 刪除指定資料夾 以及檔案下下面的所有檔案

2017年08月28日 00:24:20

閱讀數:3700

檔案路徑的分隔符在windows系統和linux系統中是不一樣。
比如說要在temp目錄下建立一個test.txt檔案,在Windows下應該這麼寫:
File file1 = new File (“C:\tmp\test.txt”);
在Linux下則是這樣的:
File file2 = new File (“/tmp/test.txt”);
而我剛開始就是按照File file1 = new File (“C:\tmp\test.txt”);這種方式寫的,在
Windows下沒有問題,但是將工程部署在伺服器上時,就出問題了。伺服器是linux系統,所
以這時檔案路徑就出錯了。後來將分隔符用File.separator 代替,ok,問題解決了。下邊介
紹下File.separator 。
如果要考慮跨平臺,則最好是這麼寫:
File myFile = new File(“C:” + File.separator + “tmp” + File.separator, “test.txt”);

File類有幾個類似separator的靜態欄位,都是與系統相關的,在程式設計時應儘量使用。

 

[java] view plain copy

  1. import java.io.File;  
  2.   
  3. public class Test {  
  4.   
  5.     public static void main(String[] args) throws Exception {  
  6.         delFolder("E:/test");  
  7.     }  
  8.     /*** 
  9.      * 刪除指定資料夾下所有檔案 
  10.      *  
  11.      * @param path 資料夾完整絕對路徑 
  12.      * @return 
  13.      */  
  14.     public static  boolean delAllFile(String path) {  
  15.         boolean flag = false;  
  16.         File file = new File(path);  
  17.         if (!file.exists()) {  
  18.             return flag;  
  19.         }  
  20.         if (!file.isDirectory()) {  
  21.             return flag;  
  22.         }  
  23.         String[] tempList = file.list();  
  24.         File temp = null;  
  25.         for (int i = 0; i < tempList.length; i++) {  
  26.             if (path.endsWith(File.separator)) {  
  27.                 temp = new File(path + tempList[i]);  
  28.             } else {  
  29.                 temp = new File(path + File.separator + tempList[i]);  
  30.             }  
  31.             if (temp.isFile()) {  
  32.                 temp.delete();  
  33.             }  
  34.             if (temp.isDirectory()) {  
  35.                 delAllFile(path + "/" + tempList[i]);// 先刪除資料夾裡面的檔案  
  36.                 delFolder(path + "/" + tempList[i]);// 再刪除空資料夾  
  37.                 flag = true;  
  38.             }  
  39.         }  
  40.         return flag;  
  41.     }  
  42.       
  43.     /*** 
  44.      * 刪除資料夾 
  45.      *  
  46.      * @param folderPath資料夾完整絕對路徑 
  47.      */  
  48.     public  static void delFolder(String folderPath) {  
  49.         try {  
  50.             delAllFile(folderPath); // 刪除完裡面所有內容  
  51.             String filePath = folderPath;  
  52.             filePath = filePath.toString();  
  53.             java.io.File myFilePath = new java.io.File(filePath);  
  54.             myFilePath.delete(); // 刪除空資料夾  
  55.         } catch (Exception e) {  
  56.             e.printStackTrace();  
  57.         }  
  58.     }