我开始遇到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。
发布于 2017-05-08 22:39:42
在调用File.Create之前,您正在使用File.Copy,我认为这就是问题所在,它留下了一个开放的流。
也许删除File.Create调用可以解决这个问题。如果不是,您可以获得返回的值(这是一个流),并在尝试复制之前关闭它。
该文件是通过读/写访问打开的,必须关闭后才能被其他应用程序打开。
见备注https://msdn.microsoft.com/en-us/library/ms143361(v=vs.110).aspx
https://stackoverflow.com/questions/43858252
复制相似问题