C#获取运行时错误:进程无法访问该文件,因为另一个进程正在使用该文件
这是我的密码:C#获取运行时错误:进程无法访问该文件,因为另一个进程正在使用该文件,c#,.net,filestream,C#,.net,Filestream,这是我的密码: 请检查显示错误的图像。我已多次尝试更改文件访问权限,但都没有成功。这篇文章介绍了如何使用单个流读取和写入文件: 考虑到您可能在上次错误运行时仍打开了该文件。使用诸如Sysinternals Process Monitor或Unlocker之类的工具来验证它没有被其他实例打开 如何使用过程监视器: 源文件和目标文件都引用同一个文件。首先(source)以独占方式打开(即不共享) 在第二个实例(dest)中,您现在希望创建在第一个实例中打开的文件,但允许共享该文件 由于源代码已打
请检查显示错误的图像。我已多次尝试更改文件访问权限,但都没有成功。这篇文章介绍了如何使用单个流读取和写入文件: 考虑到您可能在上次错误运行时仍打开了该文件。使用诸如Sysinternals Process Monitor或Unlocker之类的工具来验证它没有被其他实例打开 如何使用过程监视器:
源文件和目标文件都引用同一个文件。首先(
source
)以独占方式打开(即不共享)
在第二个实例(dest
)中,您现在希望创建在第一个实例中打开的文件,但允许共享该文件
由于源代码
已打开,因此无法使用dest
在其顶部写入
我认为您可能真正想要的是使
dest
的path
参数不同于source
的path
参数,因为您现在实际上是在尝试将相同的数据重新写入同一位置的同一文件。您从同一文件创建了两个流,所以它无法工作。你想干什么?你能再解释一下吗。似乎你打开了一个文件,读了它,然后试图把完全相同的东西写进同一个文件???实际上我正在先读文件,然后我需要在文件中执行一些更改。这里我显示了图像文件,但我必须使用.txt、.doc、.job文件。读取文件后,我需要在其中写入,最后在同一位置保存/更新。
using System.IO;
namespace Randoms
{
public class Program
{
public static void Main()
{
byte[] buffer = new byte[10240]; // buffer size
string path = @"C:\Users\RAHUL\Desktop\file.txt";
using (FileStream source = new FileStream(path, FileMode.Open, FileAccess.Read))
{
long fileLength = source.Length;
using (FileStream dest = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read))
{
long totalBytes = 0;
int currentBlockSize = 0;
while ((currentBlockSize = source.Read(buffer, 0, buffer.Length)) > 0)
{
totalBytes += currentBlockSize;
double percentage = (double)totalBytes * 100.0 / fileLength;
dest.Write(buffer, 0, currentBlockSize);
}
}
}
}
}
}