2012-08-02 53 views
0

我的程序中我有一個datagridview,填充了2列。 第一列包含像filename.ext這樣的值 第二列包含此文件的大小。比較datagridview到fileinfo中的值

現在,我需要比較,如果在列中列出的文件是一個選定的文件夾中(openfolder對話框中選擇)

我認爲在存在或不存在已使用

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

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

我想使用2陣列列表,然後在第一個文件大小中添加第一個文件名,但只是假設並且對於具有多個文件的文件夾,過程很慢。 什麼是最好的方法來做到這一點?

回答

2

你並不需要創建一個FileInfo對象來檢測在特定路徑的文件是否存在該代碼。只需使用System.IO.File.Exists method即可。如果第一列中的路徑是相對路徑,那麼在調用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 
} 
+0

path = Path.Combine(@ C:\ absolute \ path \「,path);我使用openfolderdialog選擇路徑,如何修復? – devilkkw 2012-08-02 15:52:57

+0

我假設你的意思FolderBrowserDialog在這種情況下,你應該讓你的代碼是:path = Path.Combine(folderBrowserDialog.SelectedPath,path); – Dan 2012-08-02 15:56:35

+0

非常感謝你,效果更好。 – devilkkw 2012-08-02 16:13:42

2

可以使用基於數據表

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(); 
+0

感謝您的回覆速度快,你能解釋一下這行:DataGridView.DataSource = DT; DataGridView.DataBind(); ? – devilkkw 2012-08-02 15:44:23

+0

您將您的gridview與您的數據表(源代碼)鏈接在一起,並且爲了打印數據而綁定,我很樂意爲您效勞 – 2012-08-02 15:45:17

+0

非常感謝您 – devilkkw 2012-08-02 16:14:05