java 扫描用户指定路径下的所有文件,将文件完整路径、文件大小以json数据格式写入用户指定路径下的txt文件中,并追加写入文件总数、占用空间总量和执行时间
时间: 2024-05-08 20:18:36 浏览: 95
一个java文件扫描程序
5星 · 资源好评率100%
好的,这是一个比较有趣的问题。以下是我给出的具体解决方案:
```java
import java.io.*;
import java.util.*;
import org.json.*;
public class ScanFilesToJson {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要扫描的路径:");
String path = scanner.nextLine(); // 获取用户输入的路径
long startTime = System.currentTimeMillis(); // 记录开始时间
List<File> fileList = getFileList(new File(path));
JSONArray jsonArray = new JSONArray();
for (File file : fileList) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("FilePath", file.getAbsolutePath()); // 获取完整路径
jsonObject.put("FileSize", file.length()); // 获取文件大小
jsonArray.put(jsonObject);
}
String jsonString = jsonArray.toString();
FileWriter fileWriter = null;
try {
String outputFilePath = path + "\\output.txt"; // 写入用户指定的路径下的output.txt文件
fileWriter = new FileWriter(outputFilePath, true); // 追加写入
fileWriter.write(jsonString);
fileWriter.flush();
System.out.println("写入完成!");
// 计算文件总数和占用空间总量
int fileCount = fileList.size();
long totalSize = getTotalSize(fileList);
String summary = "文件总数:" + fileCount + "\n" + "占用空间总量:" + totalSize + " 字节\n" + "执行时间:" + (System.currentTimeMillis() - startTime) + " 毫秒";
fileWriter.write(summary); // 写入总结信息
System.out.println(summary);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fileWriter != null) {
fileWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 递归获取指定路径下的所有文件
public static List<File> getFileList(File dir) {
List<File> fileList = new ArrayList<>();
if (dir.isFile()) {
fileList.add(dir);
} else {
File[] files = dir.listFiles();
if (files != null && files.length > 0) {
for (File file : files) {
fileList.addAll(getFileList(file));
}
}
}
return fileList;
}
// 计算所有文件的总大小
public static long getTotalSize(List<File> fileList) {
long totalSize = 0;
for (File file : fileList) {
totalSize += file.length();
}
return totalSize;
}
}
```
以上代码可以实现根据用户输入的路径,递归获取该路径下的所有文件,并将每个文件的完整路径和文件大小保存到一个 `JSONArray` 中。此后,将该 `JSONArray` 转换成 JSON 字符串并写入用户指定路径下的 `output.txt` 文件中,同时追加写入文件总数、占用空间总量和执行时间。
以上是我的解答,希望能够帮助到您。如果您还有其他问题,可以继续向我提问哦!
阅读全文