C# 匹配文件的名称和大小
我在集成两段代码时遇到了一些问题。第一个检查文件的大小,下一个检查通过SQL数据库循环,并查找文件的匹配名称。我主要是想检查它是否是一个新文件,或者自从上次我记录了它的一些数据后,该文件是否发生了更改 这将获取目录中每个文件的大小C# 匹配文件的名称和大小,c#,.net,wpf,C#,.net,Wpf,我在集成两段代码时遇到了一些问题。第一个检查文件的大小,下一个检查通过SQL数据库循环,并查找文件的匹配名称。我主要是想检查它是否是一个新文件,或者自从上次我记录了它的一些数据后,该文件是否发生了更改 这将获取目录中每个文件的大小 // Make a reference to a directory. DirectoryInfo di = new DirectoryInfo("C:\\Users"); // Get a reference to each fil
// Make a reference to a directory.
DirectoryInfo di = new DirectoryInfo("C:\\Users");
// Get a reference to each file in that directory.
FileInfo[] fiArr = di.GetFiles();
// Display the names and sizes of the files.
MessageBox.Show("The directory {0} contains the following files:", di.Name);
foreach (FileInfo f in fiArr)
MessageBox.Show("The size of" + f.Name + " is " + f.Length + " bytes.");
该代码循环直到找到马赫数,或者直到所有条目都被查找完毕
try
{
// LINQ query for all files containing the word '.txt'.
var files = from file in
Directory.EnumerateFiles("C:\\Users")
where file.ToLower().Contains(".txt")
select file;
foreach (var file in files)
{
//Get path to HH file
filename = System.IO.Path.GetFileName(file);
tempString = "";
//Keep looking trough database utill database empty or HH found
while (inc != numberOfSessions && (filename != tempString))
{
sessionRow = sessions.Tables["Sessions"].Rows[inc];
tempString = sessionRow.ItemArray.GetValue(1).ToString();
inc++;
}
假设ItemAttay.GetValue(2)返回文件的保存大小。如果发生以下情况,如何最有效地保持while循环
公司numberOfSessions&&(filename!=tempString)&&(sessionRow.ItemArray.GetValue(2)=f.length)
谢谢你看 使用系统;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data;
class Program
{
static void Main(string[] args)
{
var files1 = new List<string>(Directory.GetFiles(args[0],
"*.txt",
SearchOption.AllDirectories));
List<FileData> ListFiles = new List<FileData>();
for (int i = 0; i < files1.Count; i++)
{
FileInfo file = new FileInfo(files1[i]);
FileData _tmpfile = new FileData(file.Name.ToString(), file.Length,
File.GetLastWriteTime(files1[1]).ToString("yyyy-MM-dd H:mm:ss"),
File.GetLastAccessTime(files1[1]).ToString("yyyy-MM-dd H:mm:ss"));
ListFiles.Add(_tmpfile);
}
DataSet sessions = new DataSet();
DataTable dt = sessions.Tables["Sessions"];
for (int i = 0; i < ListFiles.Count; i++)
{
//compares every file in folder to database
FileData _tmp = ListFiles[i];
for (int j = 0; j < dt.Rows.Count; j++)
{
if (_tmp.GSFileName == dt.Rows[i][0].ToString())
{
//put some code here
break;
}
if (_tmp.GSSize == long.Parse(dt.Rows[i][1].ToString()))
{
//put some code here
break;
}
}
}
}
}
public class FileData
{
string FileName = "";
public string GSFileName
{
get { return FileName; }
set { FileName = value; }
}
long Size = 0;
public long GSSize
{
get { return Size; }
set { Size = value; }
}
string DateOfModification = "";
public string GSDateOfModification
{
get { return DateOfModification; }
set { DateOfModification = value; }
}
string DateOfLastAccess = "";
public string GSDateOfLastAccess
{
get { return DateOfLastAccess; }
set { DateOfLastAccess = value; }
}
public FileData(string fn, long si, string dateofmod, string dateofacc)
{
FileName = fn;
Size = si;
DateOfModification = dateofmod;
DateOfLastAccess = dateofacc;
}
}
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.IO;
使用系统数据;
班级计划
{
静态void Main(字符串[]参数)
{
var files1=新列表(Directory.GetFiles)(args[0],
“*.txt”,
SearchOption.AllDirectories);
List ListFiles=新列表();
for(int i=0;i
如果文件内容发生变化,但大小保持不变,您是否在意?如果是这样,“检查文件大小是否已更改”标准将不起作用。也许可以改为计算一个散列?我只是不知道它是一个新文件还是附加了什么东西。它永远不会(我想永远不会)变小。如何计算散列?内置.NET散列函数的基类是。有一些非常古老的文档描述了在上计算文件哈希。您可以使用此代码创建从文件创建的哈希标记吗?在我看来,它似乎只比较字符串。我尝试了这段代码,并使用了不同目录中两个相同文件的路径,它说它们是不同的。我是否应该将文件的全部内容加载到sSourceData中,然后创建哈希标记?谢谢你帮了我的忙!要散列文件的内容,我建议。如果您将一个FileStream
(可能是由创建的)传递给此方法,则可以散列文件的内容,而不是名称。太棒了!非常感谢,这正是我想要的!