java 刪除指定資料夾 以及檔案下下面的所有檔案
阿新 • • 發佈:2018-11-02
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
- import java.io.File;
- public class Test {
- public static void main(String[] args) throws Exception {
- delFolder("E:/test");
- }
- /***
- * 刪除指定資料夾下所有檔案
- *
- * @param path 資料夾完整絕對路徑
- * @return
- */
- public static boolean delAllFile(String path) {
- boolean flag = false;
- File file = new File(path);
- if (!file.exists()) {
- return flag;
- }
- if (!file.isDirectory()) {
- return flag;
- }
- String[] tempList = file.list();
- File temp = null;
- for (int i = 0; i < tempList.length; i++) {
- if (path.endsWith(File.separator)) {
- temp = new File(path + tempList[i]);
- } else {
- temp = new File(path + File.separator + tempList[i]);
- }
- if (temp.isFile()) {
- temp.delete();
- }
- if (temp.isDirectory()) {
- delAllFile(path + "/" + tempList[i]);// 先刪除資料夾裡面的檔案
- delFolder(path + "/" + tempList[i]);// 再刪除空資料夾
- flag = true;
- }
- }
- return flag;
- }
- /***
- * 刪除資料夾
- *
- * @param folderPath資料夾完整絕對路徑
- */
- public static void delFolder(String folderPath) {
- try {
- delAllFile(folderPath); // 刪除完裡面所有內容
- String filePath = folderPath;
- filePath = filePath.toString();
- java.io.File myFilePath = new java.io.File(filePath);
- myFilePath.delete(); // 刪除空資料夾
- } catch (Exception e) {
- e.printStackTrace();
- }
- }