【发布时间】:2020-08-06 05:43:56
【问题描述】:
我在磁盘上有一个文件列表,我需要获取这些文件并将其加载到内存中。我创建了一个FileConfig 类,如下所示,其中包含每个文件的所有元数据。
public class FileConfig
{
public string FileName { get; set; }
public DateTime Date { get; set; }
public string FileContent { get; set; }
public string MD5Hash { get; set; }
}
我对每个文件都有一个MD5Hash 字符串,以便稍后我可以将它与其他文件进行比较,以确定特定文件是否不同。
下面是我的代码,我从磁盘中获取所有文件的列表,然后从中列出FileConfig 对象。
private IEnumerable<FileConfig> LoadFiles(string path)
{
IList<string> files = procUtility.GetListOfFiles(path);
if (files == null || files.Count == 0) { yield return default; }
for (int i = 0; i < files.Count; i++)
{
var cfgPath = files[i];
if (!File.Exists(cfgPath)) { continue; }
var date = File.GetLastWriteTimeUtc(cfgPath);
var content = File.ReadAllText(cfgPath);
var pathPieces = cfgPath.Split(System.IO.Path.DirectorySeparatorChar, StringSplitOptions.RemoveEmptyEntries);
var fileName = pathPieces[pathPieces.Length - 1];
var md5Hash = procUtility.GetMD5Hash(cfgPath);
yield return new FileConfig
{
FileName = fileName,
Date = date,
FileContent = content,
MD5Hash = md5Hash
};
}
}
最后我的目标是比较文件(并且还将文件内容用于其他目的),所以我使用FileConfig 类中每个文件的MD5Hash 字符串并弄清楚它们是否不同下面:
!newFile.MD5Hash.Equals(oldFile.First().MD5Hash)
有没有更好的方法可以在我的FileConfig 类中继承FileInfo 类,然后使用每个文件的length 方法进行比较?或者我这里有什么好?
【问题讨论】:
-
用长度做比较?当然可以,但是你会得到比 CRC 或散列更多的误报
标签: c# asp.net-core md5sum