gpt4 book ai didi

c# - File.Copy 未经授权的访问 C#

转载 作者:太空宇宙 更新时间:2023-11-03 21:02:39 26 4
gpt4 key购买 nike

我开始遇到 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 调用可以解决问题。如果不是,您可以获得返回值(这是一个流)并在尝试复制之前关闭它。

The file is opened with read/write access and must be closed before it can be opened by another application.

见备注https://msdn.microsoft.com/en-us/library/ms143361(v=vs.110).aspx

关于c# - File.Copy 未经授权的访问 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43858252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com