伙计我正在尝试重新保存文件(将_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]
我做错了什么?
答案 0 :(得分:1)
我猜该文件与应用程序不在同一文件夹中。
除文件名外,您还必须包含路径。
File.Move(path + oldname, path + newName);
答案 1 :(得分:1)
在收到FileSystemWatcher组件的OnChanged事件时,似乎您正在尝试移动/重命名该文件。如果这是真的,这意味着另一个应用程序正在编写/更改您尝试移动/重命名的文件 这可能会导致上述错误消息。该文件存在,但在其他应用程序关闭之前,您无法访问该文件。
答案 2 :(得分: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);