簡體   English   中英

File.Copy 方法使文件不可訪問

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM