Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
2pizza
Зарегистрирован: 22.10.2005 Сообщения: 8
|
Добавлено: Вс Окт 08 2006 22:39 Заголовок сообщения: Подсчёт кол-ва файлов на java |
|
|
Мне необходимо подсчитать кол-во файлов в заданном каиалоге, а если в этом каталоге исть ещё каталоги то рекурсивно пробежаться и по ним и соответственно посчитать кол-во файлов в них.Я вот функцию написал, но она криво работает: не считает файлы во вложенных директориях, т.е. рекурсию не делает.Если кому не в лом,скажите плз чё не так в ф-ии.
public static int fcount(String dirName){
File from= new File(dirName);
int c=0; //counter
if(!from.exists()) System.err.println("Directory doesn't exist");
if (from.isFile()) System.err.println(from.getName()+ "is not a directory");
String[] all= from.list(); //list of all files and dirs
for(int i=0; i< all.length;i++){
File temp=new File(all[i]);
if (temp.isFile()){
c++;
System.out.println("file"+ c);
}
else if(temp.isDirectory())
try{fcount(temp.getName());}
catch(IllegalArgumentException e)
{System.err.println(e.getMessage());}
}
return c;
} _________________ the hole thing i think is sic |
|
Вернуться к началу |
|
|
gorbunaak
Зарегистрирован: 31.05.2005 Сообщения: 12 Откуда: Москва
|
Добавлено: Пн Окт 09 2006 18:17 Заголовок сообщения: |
|
|
1) getName() возвращает не полный путь, а только имя файлв;
2) результат выполнения fcount(temp.getName()) игнорируется.
К примеру, вот так работает:
public static int fcount(String dirName){
File from = new File(dirName);
int c = 0; //counter
if (!from.exists()) {
System.err.println("Directory doesn't exist");
return -1;
}
if (from.isFile()) {
System.err.println(from.getName()+ "is not a directory");
return -1;
}
String[] all= from.list(); //list of all files and dirs
for(int i = 0; i < all.length; i++){
File temp = new File(from.getAbsolutePath() + File.separator + all[i]);
if (temp.isFile()){
c++;
System.out.println("file"+ c);
} else if(temp.isDirectory()) {
c += fcount(temp.getAbsolutePath());
}
}
return c;
} |
|
Вернуться к началу |
|
|
|