2012-03-21 82 views
-4

我嘗試使用下面的代碼路徑,將文件複製到另一個:如何避免「被另一個進程使用的」當在C#中使用File.Copy

File.Copy(oldPath, newPath);. 

NEWPATH代表路徑和文件名一樣C:\txt.txt

oldPath表示相同d:\d.txt

我得到下面的異常路徑和文件名:

C:\ txt.txt從另一個進程中使用

爲什麼會顯示此問題?

+1

拋出了什麼異常,以及拋出異常時在oldPath和newPath中有什麼? – SimpleVar 2012-03-21 07:55:16

+1

「被另一個進程使用」 - 聲音就像你需要文件鎖定一樣? – 2012-03-21 07:56:53

+0

是的,謝謝@ChristoferEliasson ..請問我可以給我的問題投個票 – 2017-01-30 09:14:39

回答

1

經常因爲從Windows的程序之一是使用您要複製的文件的原因 - 使用由Visual Studio CS的文件在我的情況是在調試文件。 ..

2

有八個可能發生潛在的異常:UnauthorizedAccessException,ArgumentException的,ArgumentNullException,PathTooLongException,DirectoryNotFoundException,FileNotFoundException異常,FileNotFoundException異常,IOException異常或NotSupportedException異常(請參閱MSDN文檔在http://msdn.microsoft.com/en-us/library/c6cfw35a.aspx發現這些異常的細節)。

您表示該文件被創建它的進程鎖定。這應該解決您的問題:

using (FileStream fs = File.Create("c:\\michal.txt")) 
{ 
} 

File.Copy("c:\\michal.txt", "c:\\michal_new.txt"); 

File.Delete("c:\\michal.txt"); 
File.Delete("c:\\michal_new.txt"); 
+0

未處理的異常發生了進程無法訪問文件「C:\ ... \ n.jpg」,因爲它正在被另一個進程使用 – 2012-03-21 08:40:13

+0

Visual Studio鎖定我的文件,因爲我用它在相同的過程中添加文件在嘗試刪除或複製它之前在新路徑..所以也許Myquestion如何關閉文件創建file.Copy(oldpath,newpath); statment? – 2012-03-21 08:48:11

+0

謝謝米哈爾,但編譯器拋出的異常未處理的異常發生進程無法訪問文件**「c:\\ michal_new.txt」**,因爲它正在被另一個進程使用 – 2012-03-21 11:54:41

相關問題