java 扫描指定路径及其子文件夹下的所有文件,将文件的完整路径、文件大小以JSON数据的格式写到用户指定路径下的txt文件中,并统计文件总数、占用空间总量和执行时间
时间: 2024-05-15 15:17:50 浏览: 161
能够对文件夹,代码文件进行行数统计
好的,我明白了。针对您的问题,可以使用递归遍历文件夹,并提取每个文件的属性,然后将这些属性以JSON格式写入指定路径下的txt文件中。以下是Java代码实现的示例:
```java
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class ScanFiles {
private static long totalSize = 0;
private static int fileCount = 0;
public static void main(String[] args) throws IOException {
String path = "指定路径";
String outputPath = "用户指定路径";
File jsonFile = new File(outputPath + "/output.txt");
if (!jsonFile.getParentFile().exists()) {
jsonFile.getParentFile().mkdirs();
}
FileWriter writer = new FileWriter(jsonFile);
long start = System.currentTimeMillis();
List<JSONObject> fileList = getFileList(path);
long end = System.currentTimeMillis();
long duration = end - start;
JSONObject result = new JSONObject();
result.put("total_files", fileCount);
result.put("total_size", totalSize);
result.put("time_taken", duration);
result.put("files", fileList);
writer.write(result.toJSONString());
writer.flush();
writer.close();
}
public static List<JSONObject> getFileList(String path) throws IOException {
List<JSONObject> fileList = new ArrayList<>();
File file = new File(path);
if (file.isDirectory()) {
for (File f : file.listFiles()) {
fileList.addAll(getFileList(f.getAbsolutePath()));
}
} else {
fileCount++;
totalSize += file.length();
JSONObject jsonFile = new JSONObject();
jsonFile.put("path", file.getAbsolutePath());
jsonFile.put("size", file.length());
fileList.add(jsonFile);
}
return fileList;
}
}
```
以上代码会扫描指定路径及其子文件夹下的所有文件,并将文件的完整路径、文件大小以JSON数据的格式写入指定路径下的txt文件。最后,程序会统计文件总数、占用空间总量和执行时间,并将这些数据一并写入到JSON对象中,最终以JSON格式输出到txt文件中。
希望这个示例能够帮助您解决问题。如果您还有其他问题,请随时与我交流。
阅读全文