0
在隨機設置的嵌套文件夾和文件中,我需要獲取所有文件夾路徑,其中特定子文件夾的名稱是「x」。獲取特定文件夾路徑
例如,在下面的結構,我需要的程序只返回a\c\e\x
回:
請參閱可以有嵌套任何級別的任何文件夾結構。
UPDATE: 我已經能夠編寫一個基本的程序來實現我想要的。但是,在我之前的圖中,在'dir d'下有一個目錄'dir x'時失敗。所以程序返回一個\ c \ e \ x和d \ x。你能幫助解決這個問題嗎?
公共類殭屍{
String folderName= new String();
ArrayList folderList= new ArrayList();
public static void main(String[] args) {
String path;
try {
path = new java.io.File(".").getCanonicalPath();
Zombie zombie= new Zombie();
getFilePaths(new File(path).listFiles(), zombie);
Iterator itr = zombie.folderList.iterator();
while (itr.hasNext())
System.out.println(itr.next());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void getFilePaths(File[] fileList, Zombie zombie) {
for (int i=0; i<fileList.length; i++) {
File file= fileList[i];
if (file.isDirectory()) {
if (containsDesiredFolder(file)) {
zombie.folderList.add(zombie.folderName+ "\\" + file.getName());
zombie.folderName="";
} else {
if (containsFoldersNotFiles(file)) {
zombie.folderName= zombie.folderName + "\\" + file.getName();
getFilePaths(file.listFiles(), zombie);
}
}
}
}
}
public static boolean containsFoldersNotFiles(File file) {
boolean flag = false;
if (file.isFile()) return false;
File[] dummyList = file.listFiles();
//no file or folder present
if (dummyList == null)
return flag;
for (int i = 0; i < dummyList.length; i++) {
File dummyFile = dummyList[i];
if (dummyFile.isDirectory()) {
return true;
}
}
return flag;
}
public static boolean containsDesiredFolder(File file) {
boolean flag = false;
if (file.isFile()) return false;
File[] dummyList = file.listFiles();
if (dummyList == null)
return flag;
for (int i = 0; i < dummyList.length; i++) {
File dummyFile = dummyList[i];
if (dummyFile.isDirectory() && dummyFile.getName().equals("dirx")) {
flag = true;
}
}
return flag;
}
}
主要依賴於用於容納文件和文件夾的數據結構,這裏使用的數據結構是什麼? –