我正在尝试覆盖文件的内容。该文件在大多数情况下都在使用。我知道如何在Java中执行此操作,但我不确定如何在C#中执行此操作。这就是我现在所拥有的:
public bool ByteArrayToFile(string fileName, byte[] byteArray)
{
try
{
using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
fs.Write(byteArray, 0, byteArray.Length);
return true;
}
}
catch (Exception ex)
{
Console.WriteLine("Exception caught in process: {0}", ex);
return false;
}
}
我正在尝试将字节数组写入文件。我使用WebClient从URL获取字节数组。当文件正在使用时,我得到一个IOException,它表示我无法访问该文件,因为它被另一个进程使用。在Java中,我是这样做的,使用commons-io:
FileUtils.copyInputStreamToFile(new URL(url).openStream(), target);
上面的方法对我有用,但我似乎无法在C#中复制它。有办法吗?
答案 0 :(得分:0)
您无法覆盖正在使用的文件并被Windows中的其他进程锁定。您需要找到具有文件句柄的进程并终止进程以释放句柄。
如果您正在编写或控制访问文件的程序/进程,可以考虑使用System.IO
中的以下内容:
FileStream.Lock - '阻止其他进程读取或写入FileStream'
FileStream.Unlock - '允许其他进程访问之前锁定的文件的全部或部分内容。'