1

伙计们,我正在尝试重新制作文件(将 _DONE 添加到其名称中)

我的研究表明 File.move(OLDNAME,NEWNAME) 是我需要的。于是,我做到了,

try
{
    string oldname = name;
    //XYZ_ZXX_ZZZ
    string newName = ToBeTested + "_DONE.wav";
    //rename file
    //NOTE : OldName is already in format XYZ_III_SSS.wav
    File.Move(oldname, newName);

}
catch (Exception exRename)
{
    string ex1 = exRename.ToString();
    //logging an error 
    string m = "File renaming process failed.[" + ex1 + "]";
    CreateLogFile(p, m);
}

但它不承担任何结果(文件未重命名),但记录了异常。

像这样

System.IO.FileNotFoundException: Could not find file 'C:\Users\Yachna\documents\visual studio 2010\Projects\FolderMonitoringService_RCCM\FolderMonitoringService_RCCM\bin\Debug\54447874_59862356_10292013_153921_555_877_400_101.wav'.
File name: 'C:\Users\Yachna\documents\visual studio 2010\Projects\FolderMonitoringService_RCCM\FolderMonitoringService_RCCM\bin\Debug\54447874_59862356_10292013_153921_555_877_400_101.wav'
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.Move(String sourceFileName, String destFileName)
   at RCCMFolderMonitor.Monitor.OnChanged(Object source, FileSystemEventArgs e) in C:\Users\Yachna\documents\visual studio 2010\Projects\FolderMonitoringService_RCCM\RCCMFolderMonitor\Monitor.cs:line 209]

我做错了什么 ?

4

3 回答 3

1

我猜该文件与应用程序不存在于同一文件夹中。

除了文件名之外,您还必须包含路径。

File.Move(path + oldname, path + newName);
于 2013-10-28T12:00:54.760 回答
1

从 StackTrace 看来,您在收到 FileSystemWatcher 组件的 OnChanged 事件时正在尝试移动/重命名文件。如果这是真的,这意味着另一个应用程序正在写入/更改您尝试移动/重命名的文件。
这可能会导致上述错误消息。该文件存在,但在其他应用程序关闭它之前您无法访问它。

于 2013-10-28T12:04:17.170 回答
1

在不包含文件路径的情况下,Visual Studio 会在 Debug 目录中查找该文件。这就是错误的原因。

您必须使用System.IO 命名空间的Path.Combine方法包含文件的完整路径:

string myDirectory = @"C:\Files";

string myFileName = "myFile.wav";
string myNewFileName = "myFileNew.wav";

string myFileFullPath = Path.Combine(myDirectory, myFileName); 
string myNewFileFullPath = Path.Combine(myDirectory, myNewFileName); 

Console.WriteLine(myFileFullPath); // it writes to Console: C:\Files\myFile.wav

//Then you can rename the file
File.Move(myFileFullPath, myNewFileFullPath);
于 2013-10-28T12:08:33.317 回答