在C#中创建的错误复制文件

时间:2017-07-07 23:53:20

标签: c#

当我尝试复制在C#中创建的文件时出现此问题:

" System.IO.IOException:'进程无法访问文件' d:\ las.txt'因为它正在另一个过程中使用。'"

我的代码:

using System;

namespace modulo1
{
    class Program
    {
        static void Main(string[] args)
        {
           string folderName = @"c:\lasss";

           System.IO.Directory.CreateDirectory(folderName);

           string archivo = @"d:\las.txt";

           System.IO.File.Create(archivo);       

            string dest = @"d:\soft";

           //here is the problem
            System.IO.File.Copy(archivo, dest, true);
        }
    }
}

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:7)

File.Create()方法创建一个文件并将FileStream对象返回给该文件(请参阅文档here)。因此,如果您不打算使用该文件流,则需要先关闭它才能访问该文件:

System.IO.File.Create(archivo).Close();       

或者,由于FileStream实现了IDisposable,您可以将其放在using块中,该块会为您关闭并处理它:

using (var fileStream = System.IO.File.Create(archive))
{ 
    // do something with the file stream here if you need to
}

答案 1 :(得分:1)

第一次看到导致这个问题的原因是什么?

错误信息非常明确:您正在尝试访问某个文件,并且无法访问该文件,因为另一个进程(甚至同一进程)正在对其执行某些操作(并且它不允许任何共享)。< / p>

您需要包含模式,以确保在异常情况下文件不会保持打开状态(可能是文件正在使用的原因:出错了,没有人关闭它;)。< / p>

当我说你需要实现模式时,FileStream实现IDisposable,所以很容易将所有代码包装在using语句中:

using (var fileStream = System.IO.File.Create(archive)) {
    // do your operations with your files in here
}

答案 2 :(得分:0)

感谢您的回答 这对我有用:

...
 var fileStream = System.IO.File.Create(archivo);
 fileStream.Close();
...