0

私のプログラムでは、2列が入力されたdatagridviewがあります。最初の列には、filename.ext のような値が含まれます。2 番目の列には、このファイルのサイズが含まれます。

ここで、列にリストされているファイルが選択したフォルダーに存在するかどうかを比較する必要があります (openfolder ダイアログで選択)

私は使用する必要があると思います

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

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

私は2つの配列リストを使用し、最初のファイル名を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 に答える