Java递归遍历目录,显示其中的文件名和目录名。若为文件,则直接显示文件的大小;若为目录,则显示目录中的文件和子目录。注意显示文件大小的单位(KB或MB)。
时间: 2024-10-23 22:06:55 浏览: 24
遍历目录下所有的文件_遍历文件夹文件_java遍历目录下所有文件_
在Java中,你可以使用`java.io.File`类和递归来遍历目录树并获取文件和子目录的信息。下面是一个简单的示例代码片段,展示了如何实现这个功能:
```java
import java.io.File;
import java.io.IOException;
public class DirectoryTraversal {
private static final int KB = 1024, MB = KB * KB; // 单位转换
public static void listDirectory(File dir) {
if (dir.isDirectory()) { // 如果是目录
System.out.println(dir.getName() + " (directory):");
File[] files = dir.listFiles();
if (files != null) {
for (File file : files) {
listDirectory(file); // 递归遍历子目录
}
} else {
System.out.println("No children.");
}
} else { // 如果是文件
try {
long fileSize = dir.length(); // 获取文件大小
String sizeStr;
if (fileSize < MB) {
sizeStr = String.format("%.2f KB", fileSize / KB);
} else {
sizeStr = String.format("%.2f MB", fileSize / MB);
}
System.out.println(dir.getName() + ": " + sizeStr);
} catch (IOException e) {
System.err.println("Error reading file: " + dir.getName());
}
}
}
public static void main(String[] args) {
File directory = new File("/path/to/directory"); // 替换为你想要遍历的实际路径
listDirectory(directory);
}
}
```
在这个例子中,`listDirectory`方法接受一个`File`对象作为参数,并检查它是否是目录。如果是,会递归地对每个子目录调用自身。如果是个文件,就尝试获取其大小并按照KB或MB显示。
阅读全文