题目:*18.29(某个目录下的文件数目)
编写一个程序,提示用户输入一个目录,然后显示该目录下的文件数。
和上一题(18.28)的思路差不多,把找到文件后累加大小到变量变成计数+1即可。
Java语言程序设计基础篇_编程练习题*18.28 (非递归目录大小)-CSDN博客
代码示例
编程练习题18_29FileCount.java
java
package chapter_18;
import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;
public class 编程练习题18_29FileCount {
public static void main(String[] args) {
System.out.print("Enter a directory or a file: ");
Scanner input = new Scanner(System.in);
String directory = input.nextLine().replaceAll("\\\\", "//");
System.out.println("There are "+FileCount(new File(directory)) + " files");
input.close();
}
public static int FileCount(File file){
int count = 0;
ArrayList<File> files = new ArrayList<File>();
files.add(file);
while(!files.isEmpty()) {
ArrayList<File> newList = new ArrayList<File>();
for(File f : files) {
if(f.isFile())
count ++;
else {
File[] fileList = f.listFiles();
if(fileList != null) {
for(File f2:fileList){
if(f2.isDirectory())
newList.add(f2);
else count ++;
}
}
}
}
files = newList;
}
return count;
}
}
输出结果
java
Enter a directory or a file: C:\Users\Lenovo\eclipse-workspace\JavaFX\src\Text
There are 54 files