2011-02-04 40 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) 
    ... 
} 
相关问题