0

在我的程序中,我有一个 datagridview,填充了 2 列。第一列包含类似于 filename.ext 的值,第二列包含此文件的大小。

现在,我需要比较列中列出的文件是否存在于所选文件夹中(由打开文件夹对话框选择)

我认为必须使用

DirectoryInfo di = new DirectoryInfo(fldChk.SelectedPath);
                FileInfo[] rgFiles = di.GetFiles("*.*");

                foreach (FileInfo file in rgFiles)
                  { //do there

我认为使用 2 个数组列表,然后添加第一个文件名,在第二个文件大小中。但只是假设,对于有很多文件的文件夹,过程非常缓慢。最好的方法是什么?

4

2 回答 2

2

您可以使用基于此代码的 DataTable

var file = ...;
FileInfo f = new FileInfo(file);
FileSystemInfo f1 = new FileInfo(file);
dr = dt.NewRow();
//Get File name of each file name
dr["File_Name"] = f1.Name;
//Get File Size of each file in KB format
dr["File_Size"] = (f.Length / 1024).ToString();
DataTable dt = new DataTable();
dt.Rows.Add(dr);

DataGridView.DataSource = dt;
DataGridView.DataBind();
于 2012-08-02T15:40:58.980 回答
2

您无需创建 FileInfo 对象来检测特定路径中的文件是否存在。只需使用System.IO.File.Exists 方法。如果第一列中的路径是相对路径,则必须在调用 Exists 方法之前将绝对路径添加到列中的路径。

var path = column.Text; // or wherever you get the path from
path = Path.Combine(@"C:\absolute\path\", path);
if (File.Exists(path))
{
   // Do something
}
于 2012-08-02T15:45:41.483 回答