用csharp写一个方法,可以对一个文件夹下括子文件夹的每一个文件生成 相对路径,md5值,大小者三个数据,以json格式保存为FileList.json的方法
时间: 2023-05-28 11:08:12 浏览: 116
以下是用C#实现的方法:
```csharp
using System;
using System.Collections.Generic;
using System.IO;
using System.Security.Cryptography;
using System.Text.Json;
public static void GenerateFileList(string folderPath)
{
var fileList = new List<object>();
var folder = new DirectoryInfo(folderPath);
foreach (var subFolder in folder.GetDirectories())
{
foreach (var file in subFolder.GetFiles())
{
var relativePath = file.FullName.Substring(folderPath.Length);
var md5Hash = CalculateMD5Hash(file.FullName);
var fileSize = file.Length;
var fileInfo = new
{
RelativePath = relativePath,
MD5Hash = md5Hash,
FileSize = fileSize
};
fileList.Add(fileInfo);
}
}
var json = JsonSerializer.Serialize(fileList);
var filePath = Path.Combine(folderPath, "FileList.json");
File.WriteAllText(filePath, json);
}
private static string CalculateMD5Hash(string filePath)
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(filePath))
{
var hash = md5.ComputeHash(stream);
return BitConverter.ToString(hash).Replace("-", "").ToLower();
}
}
}
```
该方法接收一个文件夹路径作为参数,遍历该文件夹下的每一个子文件夹,对每个文件生成相对路径、MD5值和大小,并将其保存在一个List<object>中。最终,将该List序列化为JSON字符串,并保存到该文件夹下的FileList.json文件中。
注意:为了计算文件的MD5值,我们使用了MD5.Create()方法创建了一个MD5实例,并使用File.OpenRead()方法打开了文件流,然后使用md5.ComputeHash()方法计算出文件的MD5值。在这个过程中,我们使用using语句确保文件流和MD5实例在使用完毕后被正确释放。
阅读全文
相关推荐
















