Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Глубина поиска в обходе дерева файловой системы / 2 сообщений из 2, страница 1 из 1
18.10.2012, 21:50:53
    #38004995
boott
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глубина поиска в обходе дерева файловой системы
И так, нужно реализовать следующее - пользователь вводит в консоль три параметра, путь к начальному каталогу, маску, и глубину поиска. Программа должна найти все файли и папки, в которых есть маска, на нужной глубине. Реализовать сам поиск у меня получилось. Не решенным остался вопрос как прикрутить к этому глубину поиска.
Ниже приведен код, если у кого - то есть какие - то соображения, буду благодарен.


import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;




public class TestPE {
// фильтр
static class MyFilter implements FilenameFilter {

private String mask;
public MyFilter(String mask) {
this.mask = mask;
}

public boolean accept(File dir, String name) {



File f = new File (name);
if (f.getName().contains(mask)){
return true;
}
else {return false;}



}

}


public static void main (String args []){

String Path = args[0];


String mask = args[1];

// Integer depth_temp =Integer.valueOf(args[2]);
//int depth = depth_temp.intValue();


File rootPath = new File (Path);

if (rootPath.isDirectory()){


ArrayList <File> listt = new ArrayList <File> ();

listt.add(rootPath);

do {
for (int i=0; i<listt.size(); i++){

if (listt.get(i).isDirectory()){
listt.addAll(Arrays.asList(listt.get(i).listFiles()));



}



}


}
while (listt.isEmpty());

File [] all = listt.toArray(new File[listt.size()]);


for (int i=0; i<all.length; i++){

if (all[i].isDirectory()){


File [] folderlist = all[i].listFiles(new MyFilter(mask));
for (int j=0; j<folderlist.length; j++){

System.out.println(folderlist[j]);

}


}

}



}


}


}
...
Рейтинг: 0 / 0
18.10.2012, 22:04:48
    #38005013
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глубина поиска в обходе дерева файловой системы
Код: java
1.
2.
3.
4.
5.
6.
7.
def list(dir,depth){
	if(depth==0){
		println dir
	}else{
		dir.listFiles().grep({it.isDirectory()}). each { list(it,depth -1)}
	}
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Глубина поиска в обходе дерева файловой системы / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]