Предположим, моя структура каталогов выглядит следующим образом: -
Главная папка
1.file1
2.Folder1
2.1 файл2
2,2 файл3
2,3 file4
3 file5
4.Folder2
4.1 file6
4,2 file7как получить общее количество файлов, находящихся в главном каталоге и в подкаталоге, работая everytype структуры в Java
Внутри основной папки общих файлов являются 7, как я знаю, структура поэтому не может писать код, чтобы вычислить общее количество файлов в основной папке
public class FileIo {
public static void main(String[] args) throws IOException {
int count1=0;
File f=new File("C:\\Users\\omshanti\\Desktop","mainfolder");
String[] s=f.list();
for(String s1:s){
File f1=new File(f,s1);
if(f1.isFile()){
count1++;
}
if(f1.isDirectory()){
int subdirfilelength=f1.list().length;
count1=count1+subdirfilelength;
}
}
System.out.println("total no of files in h1 folder "+count1);
}
}
выше код работает правильно и дать общее количество файлов в 7
, но если я не знаю структуру файла и папки внутри главной папки также содержит вложенную папку и папка содержит файл, поэтому выше кода не давать правильные ответы,
, например: -
Главная папка
1.file1
2.Folder1
2.1 subfolder1
2.1.1 SubFolderOfSubFolder
2.1.1.1 файл2
2.1.1.2 файл3
2.1.1.3 file4 2,2 file5
3 file6
4 .Folder2
4.1 file7
4.2 file8
здесь не общее количество файлов 8, но выше код не
наконец я получил это решение
int count1=0;
File f=new File("C:\\Users\\omshanti\\Desktop","h1");
String[] s=f.list();
for(int i=0;i<s.length;i++){
File f1=new File(f,s[i]);
if(f1.isFile()){
count1++;
}
else if(f1.isDirectory()){
String[] subdir1=f1.list();
for(int j=0;j<subdir1.length;j++){
File f2 = new File(f1, subdir1[j]);
if (f2.isFile()) {
count1++;
}
else if(f2.isDirectory()){
String[] subdir2=f2.list();
for(int k=0;k<subdir2.length;k++){
File f3 = new File(f2, subdir2[k]);
if (f3.isFile()) {
count1++;
}
else if(f3.isDirectory())
{
String[] subdir3=f3.list();
for (String subdir31 : subdir3) {
File f4 = new File(f3, subdir31);
if (f4.isFile()) {
count1++;
}
}
}
}
}}}
}
System.out.println("total no of files in h1 folder "+count1);
[Walking Дерево файлов] (https://docs.oracle.com/javase/tutorial/essential/io/walk.html). Вы также можете провести некоторое исследование рекурсии метода (вызовы рекурсивного метода) – MadProgrammer
Для [пример] (http://stackoverflow.com/questions/12505491/list-files-from-directories-and-sub-directories-in- java-including-only-partial-f/12505570 # 12505570), [пример] (http://stackoverflow.com/questions/28580764/listfiles-in-java-fails-to-get-all-files/28581269#28581269) – MadProgrammer