设计一个Java程序:完成:统计指定文件夹下的子文件夹的总数(如:文件夹abc下有子文件夹de,de下有文件夹ef,则de和ef都计算在内)、文件总数、文件总的空间大小。 输入界面: 请输入一个文件夹(如:c:/abc): 输出界面: 文件夹****下的子文件夹的总数:**** 文件总数:***** 文件总的空间:***** 字节
时间: 2023-07-23 15:21:37 浏览: 33
好的,以下是Java程序的代码实现,可以实现你所需的功能:
```java
import java.io.File;
public class FolderStats {
public static void main(String[] args) {
String folderPath = args[0];
File folder = new File(folderPath);
if (folder.exists() && folder.isDirectory()) {
int numSubfolders = 0;
int numFiles = 0;
long totalSize = 0;
File[] files = folder.listFiles();
for (File file : files) {
if (file.isDirectory()) {
numSubfolders++;
FolderStats stats = new FolderStats();
stats.calculate(file);
numSubfolders += stats.getNumSubfolders();
numFiles += stats.getNumFiles();
totalSize += stats.getTotalSize();
} else {
numFiles++;
totalSize += file.length();
}
}
System.out.println("文件夹" + folderPath + "下的子文件夹的总数:" + numSubfolders);
System.out.println("文件总数:" + numFiles);
System.out.println("文件总的空间:" + totalSize + "字节");
} else {
System.out.println("文件夹" + folderPath + "不存在或不是一个文件夹。");
}
}
private int numSubfolders;
private int numFiles;
private long totalSize;
public void calculate(File folder) {
numSubfolders = 0;
numFiles = 0;
totalSize = 0;
File[] files = folder.listFiles();
for (File file : files) {
if (file.isDirectory()) {
numSubfolders++;
calculate(file);
} else {
numFiles++;
totalSize += file.length();
}
}
}
public int getNumSubfolders() {
return numSubfolders;
}
public int getNumFiles() {
return numFiles;
}
public long getTotalSize() {
return totalSize;
}
}
```
你可以将上述代码保存在一个名为`FolderStats.java`的文件中。接着,你可以在命令行中使用以下命令编译这个Java程序:
```
javac FolderStats.java
```
接着,你可以使用以下命令运行这个程序:
```
java FolderStats "c:/abc"
```
注意将`c:/abc`替换为你想要统计的文件夹的路径。最后,程序会输出统计结果,包括子文件夹的总数,文件总数和文件总的空间大小。