欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java非遞歸實(shí)現(xiàn)刪除任意目錄的方法

 更新時(shí)間:2017年05月09日 11:21:28   作者:碼上猿夢(mèng)  
這篇文章主要為大家詳細(xì)介紹了Java非遞歸實(shí)現(xiàn)刪除任意目錄的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近在學(xué)C#的文件系統(tǒng), 發(fā)現(xiàn)C#的文件系統(tǒng)貌似比java的東西少一點(diǎn), 居然連刪除目錄都直接做好封裝了, 想到學(xué)java的時(shí)候還要自己寫(xiě)遞歸刪除, 好像沒(méi)寫(xiě)過(guò)非遞歸的,就在網(wǎng)上查了下, 關(guān)于非遞歸刪除目錄代碼沒(méi)幾個(gè), 我就寫(xiě)了一個(gè),遞歸網(wǎng)上一大堆, 就不粘上來(lái)了. 下面是代碼非遞歸的方法:

package demo1;

import java.io.File;
import java.util.ArrayList;

public class Demo1 {
 /**
  * 不使用遞歸刪除目錄
  * @param args
  */
 public static void main(String[] args) {
  deleteDirectory("E:\\test");
 }
 
 public static void deleteDirectory(String rootPath) {
  //fileList模擬的是一個(gè)隊(duì)列
  ArrayList<File> fileList = new ArrayList<File>();//存儲(chǔ)文件和直接子目錄包含文件的目錄
  //directoryList模擬的是一個(gè)棧
  ArrayList<File> directoryList = new ArrayList<File>();//存儲(chǔ)直接子目錄不包含文件的目錄 
  File root = new File(rootPath);
  if(!root.exists()){
   System.out.println("您輸入的不是目錄");
   return;
  }
  if(root.isFile()){
   root.delete();
   System.out.println("您輸入的是文件,已刪除成功");
   return;
  }
  fileList.add(0, root);//第一次入隊(duì)列
  
  while(fileList.size() > 0) {
   File dir = fileList.remove(0);//模擬一個(gè)出隊(duì)列的過(guò)程
   File[] files = dir.listFiles();
   for (int i = 0; i < files.length; i++) {
    if(files[i].isFile()) files[i].delete();
    else fileList.add(files[i]);//模擬一個(gè)入隊(duì)列的過(guò)程
   }
   directoryList.add(dir);//模擬一個(gè)壓棧的過(guò)程
  }
  //倒序遍歷,模擬一個(gè)彈粘的過(guò)程
  for (int i = directoryList.size() - 1; i >= 0; i--) {
   directoryList.get(i).delete();
  }
  if(!root.exists()){
   System.out.println("您輸入的是文件夾,已刪除成功");
  }
 }

}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論