FileInfo 找到文件,但 File.Copy 找不到该文件
本文关键字:文件 Copy 找不到 File FileInfo | 更新日期: 2023-09-27 18:30:15
我正在尝试查找具有上次写入日期的文件并将其复制到其他位置。它正确找到了文件,但是当我尝试复制它时,它找不到刚刚找到的文件。这是在 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);
}
}
}
FileInfo.ToString()
返回文件的名称,但为了复制它,您需要完整路径。改变
file = latestFile.ToString();
自
file = latestFile.FullName;
试一试。
latestFile.ToString()
评估什么?这是一种获得路径的奇怪方式。
按照文档指示使用FileInfo.FullName
。
您可以使用调试器自行查找此类 bug。
您可能需要
构造完整路径而不是使用Fileinfo.ToString()
:
file = latestFile.FullName;
从 MSDN:
在某些情况下,ToString 方法返回的字符串不表示完全限定的路径。例如,当您使用 GetFiles 方法创建 FileInfo 对象时,ToString 方法不表示完全限定的路径。