-4

基本上我写了一个程序,它将显示文件和目录列表是一个被选中的文件夹。我要做的只是在该选定文件夹中显示一些文件和目录,但它向我显示的只是该文件夹中的文件列表。为了更清楚地解释它,这是我的代码并运行它以了解程序在做什么,我的问题基本上是如何只显示该文件夹中的文件和目录的数量。

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() {

}
}
4

3 回答 3

1

您需要使用您的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);
}

如果你不在你的类中保留一个状态并返回一个包含结果的类然后你打印它会更好。

于 2013-04-10T14:47:29.593 回答
0

好的。我给你一个提示。

这是您的displayStatistics()方法应如下所示:

public void displayStatistics() {
   System.out.println("Number of files: " + numFiles);
   System.out.println("Number of directories: " + numDirectories);

}

现在剩下的就是找到合适的位置来增加这两个计数器。

于 2013-04-10T14:59:02.160 回答
0

这是我对我的问题的回答的完整代码,并感谢你提供帮助的每一个人。

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);
}
}
于 2013-04-12T15:04:27.493 回答