首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >File.Copy未授权访问C#

File.Copy未授权访问C#
EN

Stack Overflow用户
提问于 2017-05-08 22:31:15
回答 1查看 737关注 0票数 1

我开始遇到File.Copy的一个问题。这对于我的数据创建脚本来说很好,它可以在没有问题的情况下复制数千个文件。在以后的代码中试图创建临时文件时会出现问题。

我添加了下面的代码示例,它不能正常工作。我尝试过很多不同的方法来解决这个问题,但都没有用。我正在做的是将在C驱动器上的目录中创建的一些用户数据文件复制到该用户数据文件夹中的临时文件夹中。

代码

代码语言:javascript
复制
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);
}

出口误差

代码语言:javascript
复制
The program '[6256] XtremeWrestlingSim.vshost.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.

任何帮助都是非常感谢的,谢谢提前!

解决办法:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-08 22:39:42

在调用File.Create之前,您正在使用File.Copy,我认为这就是问题所在,它留下了一个开放的流。

也许删除File.Create调用可以解决这个问题。如果不是,您可以获得返回的值(这是一个流),并在尝试复制之前关闭它。

该文件是通过读/写访问打开的,必须关闭后才能被其他应用程序打开。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43858252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档