【发布时间】:2017-05-08 22:31:15
【问题描述】:
我开始遇到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。
【问题讨论】:
-
您自己编写这些文件,然后尝试复制它们吗?您可能没有在某处关闭文件句柄。确保在编写文件时使用
using语句或调用.Close() -
我质疑您为什么要创建一个新文件 (File.Create),然后在 (File.Copy) 之后直接将现有文件复制到其顶部。
标签: c# file access-violation unauthorized