当我尝试复制在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); } } }
我该如何解决这个问题?
答案 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(); ...