簡體   English   中英

File.Copy 未經授權的訪問 C#

[英]File.Copy Unauthorized access C#

我開始遇到File.Copy問題。 這適用於我的數據創建腳本,可以毫無問題地復制數千個文件。 稍后在我的代碼中嘗試創建臨時文件時會出現我的問題。

我在下面添加了無法正常工作的代碼示例。 我嘗試了許多不同的方法來嘗試解決此問題,但無濟於事。 我正在做的是將在 C 驅動器上的目錄中創建的一些用戶數據文件復制到該用戶數據文件夾內的臨時文件夾中。

代碼

foreach (string originalFile in OriginalDataFileNames)
{
    string tempFile = originalFile;
    TempDataFiles.Add(tempFile);
    Console.WriteLine("GlobalDataCtrl: Original Data File: " + XWSDataDirectory + "\\" + tempFile);
    Console.WriteLine("GlobalDataCtrl: Saved Temp Data File: " + tempPath + "\\" + tempFile);
    File.Copy(XWSDataDirectory + "\\" + originalFile, tempPath + "\\" + tempFile);
}

退出錯誤

The program '[6256] XtremeWrestlingSim.vshost.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.

任何幫助表示贊賞,提前致謝!

解決方案:

FileStream outputFS = null;
            FileStream inputFS = null;
            outputFS = new FileStream(tempPath + "\\" + tempFile, FileMode.CreateNew, FileAccess.ReadWrite);
            using (inputFS = new FileStream(XWSDataDirectory + "\\" + originalFile, FileMode.Open))
            {
                inputFS.CopyTo(outputFS);
            }
            outputFS.Close();
            inputFS.Close();

不確定它的格式有多好,但它有效。 用上面的代碼替換File.Copy

您在調用File.Copy之前正在使用File.Create ,我認為這就是問題所在,它正在留下一個開放的流。

也許刪除File.Create調用將解決問題。 如果不是,您可以獲得返回值(這是一個流)並在嘗試復制之前關閉它。

該文件以讀/寫訪問權限打開,必須先關閉,然后才能被其他應用程序打開。

請參閱備注https://msdn.microsoft.com/en-us/library/ms143361(v=vs.110).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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