Java中的递归(DirectoryAnalyzer)
基本上,我写了一个程序,将显示一个文件和目录的列表是一个选定的文件夹。 我试图做的是只显示选定文件夹中的一些文件和目录,但它所显示的只是该文件夹中的文件列表。 为了更清楚地解释它,这是我的代码,运行它来理解程序在做什么,我的问题基本上是如何显示该文件夹中的文件和目录的数量Java中的递归(DirectoryAnalyzer),java,file,recursion,directory,int,Java,File,Recursion,Directory,Int,基本上,我写了一个程序,将显示一个文件和目录的列表是一个选定的文件夹。 我试图做的是只显示选定文件夹中的一些文件和目录,但它所显示的只是该文件夹中的文件列表。 为了更清楚地解释它,这是我的代码,运行它来理解程序在做什么,我的问题基本上是如何显示该文件夹中的文件和目录的数量 import java.io.File; public class DirectoryAnalyser { public static void main(String[] args) { DirectoryAnal
import java.io.File;
public class DirectoryAnalyser {
public static void main(String[] args) {
DirectoryAnalyser stats = new DirectoryAnalyser();
stats.processFile(".");
stats.displayStatistics();
}
private int numFiles;
private int numDirectories;
public DirectoryAnalyser() {
numFiles = 0;
numDirectories = 0;
}
public void processFile(String file) {
File root = new File(file);
File[] list = root.listFiles();
for (File f : list){
if(f.isDirectory()){
processFile(f.getAbsolutePath());
System.out.println("Dir:" + f.getAbsoluteFile());
}else if(f.isFile()){
System.out.println("File:" + f.getAbsoluteFile());
}
}
}
public void displayStatistics() {
}
}
您需要使用
processFile(String)
方法计算文件和目录的数量,并在发现后打印。它将类似于:
public void processFile(String file) {
File root = new File(file);
File[] list = root.listFiles();
this.numFiles = 0;
this.numDirectories = 0;
for (File f : list) {
if (f.isDirectory()) {
numDirectories++;
processFile(f.getAbsolutePath());
} else if (f.isFile()) {
numFiles++;
}
}
}
public void displayStatistics() {
System.out.format("Total of file: %d\nTotal of directories: %d\n", numFiles, numDirectories);
}
如果不在类中保留状态并返回一个包含结果的类,然后打印它,那就更好了。好的。我给你一个提示 这就是您的
displayStatistics()
方法的外观:
public void displayStatistics() {
System.out.println("Number of files: " + numFiles);
System.out.println("Number of directories: " + numDirectories);
}
现在剩下的就是找到适当的位置来增加这两个计数器。这是我回答问题的完整代码,感谢您的帮助
import java.io.File;
public class DirectoryAnalyser {
public static void main(String[] args) {
DirectoryAnalyser stats = new DirectoryAnalyser();
stats.processFile("/Users/ThamerMashhadi/Desktop/");
stats.displayStatistics();
}
private int numFiles;
private int numDirectories;
public DirectoryAnalyser() {
}
public void processFile(String file) {
File root = new File(file);
File[] list = root.listFiles();
for (File f : list) {
if (f.isDirectory()) {
numDirectories++;
processFile(f.getAbsolutePath());
// System.out.println("Directories:" + f.getAbsoluteFile());
} else if (f.isFile()) {
numFiles++;
// System.out.println("File:" + f.getAbsoluteFile());
}
}
}
public void displayStatistics() {
System.out.println("Total of file:" + numFiles);
System.out.println("Total of directories:" + numDirectories);
}
}
你是在问如何增加一个变量吗?是你写的代码,对吗?@bhdrkn当然是我写的代码,你是什么意思!?!我唯一的问题是实际说出循环抛出了多少文件。就是这样,我不知道我基本上需要将全局变量添加到
if
语句谢谢,我讨厌解决方案的答案是一两行。