[英]File.Copy method makes file inaccessible
我現在為此苦苦掙扎了一段時間。 調用 File.Copy 方法后,我無法訪問文件。 這是我嘗試過的:
File.Copy(sourceFile, destinationFile, true);
FileStream fs = File.Open(destinationFile, FileMode.Open);
我在第二行收到 UnauthorizedAccessException 。 它說:訪問路徑...被拒絕。 我也嘗試過這里提出的建議,但沒有奏效。
任何幫助表示贊賞。
編輯:這是我發現的。 如果我這樣做:
File.Copy(sourceFile, destinationFile, true);
FileStream fs = File.Open(destinationFile, FileMode.Open, FileAccess.Read);
它不會拋出異常。 我試圖訪問的文件是只讀的。 所以,我試圖像這樣刪除只讀屬性:
File.Copy(sourceFile, destinationFile, true);
FileInfo fileInfo = new FileInfo(destinationFile);
fileInfo.IsReadOnly = false;
FileStream fs = File.Open(destinationFile, FileMode.Open, FileAccess.ReadWrite);
我得到了和以前一樣的例外。 順便說一句,我檢查了我是否可以手動打開文件並編輯它,我可以。 當然,當我取消選中只讀復選框時。 我還在調試時檢查了 windows 資源管理器中的文件屬性,就在第三行之后,文件不再是只讀的。 檢查完所有內容后,我不明白為什么在第四行拋出異常。
您確定只有使用File.Copy
復制的文件無法打開,而不是目標文件夾中的每個文件嗎? 這是一個常規的 NTFS 文件夾,還是網絡共享?
如果您正在運行防病毒或安全軟件,請嘗試禁用它。 創建文件后,他們通常會打開文件進行掃描。
更新
根據http://msdn.microsoft.com/en-us/library/b9skfh7s.aspx - File.Open
拋出的UnauthorizedAccessException
不會給出消息“訪問路徑...被拒絕”。 (編輯:我也看不到 File.Copy 的消息,所以這可能是錯誤的)
我懷疑是您的File.Copy
因該異常而失敗,並且您無權讀取源文件或寫入目標文件。 您可能正在查看突出顯示的源代碼行,它顯示了要執行的下一行。
所以 - 也許你的副本失敗了,而不是File.Open
?
嘗試這個!
private bool CheckFileHasCopied(string FilePath)
{
try
{
if (File.Exists(FilePath))
{
using (File.OpenRead(FilePath))
{
return true;
}
}
else
{
return false;
}
}
catch (Exception)
{
Thread.Sleep(2000);
return CheckFileHasCopied(FilePath);
}
}
if (CheckFileHasCopied(destinationFile)) { File.Delete(sourceFile); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.