2011-02-04 68 views
1

我有我的C#代碼的問題我似乎無法讓我的if語句工作我認爲它試圖引用錯誤的部分由於某種原因的代碼。我檢查,我在所有正確的引用和所有正確的使用我已經粘貼波紋管有問題的代碼:我得到一個錯誤「System.Array不包含LastWriteTime的定義」

FolderBrowserDialog dlg2 = new FolderBrowserDialog(); 
if (dlg2.ShowDialog() == DialogResult.OK) 
//do whatever with dlg.SelectedPath 
{ 

    string searchPattern = "*"; 
    DirectoryInfo source = new DirectoryInfo(dlg.SelectedPath); 
    DirectoryInfo target = new DirectoryInfo(dlg2.SelectedPath); 

    DirectoryInfo dir = new DirectoryInfo(dlg.SelectedPath); 
    FileInfo[] fi = dir.GetFiles("*", SearchOption.AllDirectories); 
    { 
     if (fi.LastWriteTime.Date == DateTime.Today.Date) 
     { 
      FileInfo[] sourceFiles = source.GetFiles(searchPattern, SearchOption.AllDirectories); 
      for (int i = 0; i < sourceFiles.Length; ++i) 
       File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name, true); 
     } 
    } 

,可以給定會衷心感謝感謝任何幫助。

回答

4

你想要做什麼可能是這個?

 FileInfo[] fis = dir.GetFiles("*", SearchOption.AllDirectories); 
     foreach (FileInfo fi in fis) 
     { 
      if (fi.LastWriteTime.Date == DateTime.Today.Date) 
      { 
       FileInfo[] sourceFiles = source.GetFiles(searchPattern, SearchOption.AllDirectories); 
       for (int i = 0; i < sourceFiles.Length; ++i) 
        File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name, true); 
      } 
     } 
+0

我覺得這樣的事情太多,但請注意,` fi`不在循環中使用... – 2011-02-04 12:35:13

+0

這是一個很好的開始,儘管現在的代碼沒有什麼意義(如果選定文件夾中的文件具有與今天相同的`LastWriteTime`,則copi將源文件夾中的所有文件保存到目標文件夾中)。但這顯然是OP寫的。 – 2011-02-04 12:46:24

2

那麼,fi是一個數組,所以fi.LastWriteTime.Date == DateTime.Today.Date會給出這個錯誤。正確。

您似乎沒有使用返回的目錄作其他任何事情,所以我無法建議'修復'。

0

您正在調用數組上的LastWriteTime,並且數組沒有此屬性。

您需要調用數組成員的LastWriteTime,例如,

fi[0].LastWriteTime 

或者對所有的文件進行迭代:

foreach(var file in fi) 
{ 
    if(file.LastWriteTime.Date == DateTime.Today.Date) 
    { 
     .... 
    } 
} 
0

錯誤很簡單,你是在陣列代替FileInfo的項目使用LastWriteTime。你應該在這樣的代碼使用索引:

fi[0].LastWriteTime.Date ///your code 

用食指NUM代替0或在foreach循環中像這樣使用它:

foreach(var item in fi) 
{ 
      if (item.LastWriteTime.Date == DateTime.Today.Date) 
      { 
       FileInfo[] sourceFiles = source.GetFiles(searchPattern, SearchOption.AllDirectories); 
       for (int i = 0; i < sourceFiles.Length; ++i) 
        File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name, true); 
      } 
} 
0

如前所述,該屬性在數組上無效。 只是一個foreach循環附上您的FileInfo:

foreach(FileInfo fi in dir.GetFiles("*", SearchOption.AllDirectories)) 
{ 
    if (fi.LastWriteTime.Date == DateTime.Today.Date) 
    { 
    FileInfo[] sourceFiles = source.GetFiles(searchPattern, SearchOption.AllDirectories); 
    for (int i = 0; i < sourceFiles.Length; ++i) 
     File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name, true); 
    } 
} 
0

你需要

foreach(FileInfo fi in dir.GetFiles("*", SearchOption.AllDirectories)) 
{ 
    if (fi.LastWriteTime.Date == DateTime.Today.Date) 
    { 
     FileInfo[] sourceFiles = source.GetFiles(searchPattern, SearchOption.AllDirectories); 
     for (int i = 0; i < sourceFiles.Length; ++i) 
      File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name, true); 
    } 
} 
0

你是missinf一個for循環:

for (int i = 0; i < fi.Length; ++i) 
{ 
    if (fi[i].LastWriteTime.Date == DateTime.Today.Date) 
    ... 
} 
相關問題