【问题标题】:FileInfo finds file, but File.Copy cannot find the fileFileInfo 找到文件,但 File.Copy 找不到文件
【发布时间】:2013-09-04 21:03:40
【问题描述】:

我正在尝试查找具有最后写入日期的文件并将其复制到其他位置。它正确找到了文件,但是当我尝试复制它时,它找不到刚刚找到的文件。这是在 SSIS 脚本任务中。

DirectoryInfo directory = new DirectoryInfo(@"path");
FileInfo[] files = directory.GetFiles();

//files that have been written to in the last 3 days
DateTime lastWrite = DateTime.Now.AddDays(-3); 

foreach (FileInfo latestFile in files)
{  
    // if its the correct name
    if (latestFile.Name.StartsWith("OMC")) 
    {
        // if its in the last 3 days
        if (latestFile.LastWriteTime > lastWrite) 
        {    
            lastWrite = latestFile.LastWriteTime;

            // this correctly find the file and puts it into the file variable.
            file = latestFile.ToString(); 

            // this errors out saying it cannot find the file.
            // (Does not even go to the outputFile)
            File.Copy(file, outputFile, true); // <- error

            //backs the file up 
            File.Copy(file, backupfile, true);
        }
    }   
}

【问题讨论】:

  • 设置断点的时候file有文件的全路径吗?
  • 他不是这么问的。
  • 只使用全名 insated toString 并且不要对所有投票都投反对票!
  • @PoweredByOrange 请不要使用外部网站发布图片,尤其是那些可能有不适合工作横幅的图片,而是将图片添加到答案中,然后复制答案的链接并将其放在您的评论中.完成后您可以放弃答案。
  • @ScottChamberlain 没有意识到它有不当内容。删除了评论,因为原始发布者也删除了他/她的所有 cmets。

标签: c# .net file fileinfo directoryinfo


【解决方案1】:

FileInfo.ToString() 返回文件的名称,但要复制它,您需要完整路径。改变

file = latestFile.ToString();

到

file = latestFile.FullName;

试一试。

【讨论】:

    【解决方案2】:

    latestFile.ToString() 的评估结果是什么?这是一种奇怪的获取路径的方式。

    按照文档说明使用FileInfo.FullName。

    您可以使用调试器自行查找此类错误。

    【讨论】:

    • 只是一个评论。
    • 不知道你为什么这么认为。我提出问题并展示解决方案。你对此有何看法?
    【解决方案3】:

    您可能需要构造完整路径而不是使用Fileinfo.ToString():

    file = latestFile.FullName; 
    

    来自MSDN:

    在某些情况下,ToString 方法返回的字符串不代表完全限定的路径。例如,当您使用 GetFiles 方法创建 FileInfo 对象时,ToString 方法并不代表完全限定的路径。

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 1970-01-01
      • 2021-12-26
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 2011-03-07
      • 1970-01-01
      相关资源
      最近更新 更多