如何防止出现'进程无法访问文件'Bla.txt'因为它正在被另一个进程使用.错误

本文关键字:进程 另一个 错误 因为 文件 何防止 Bla 访问 txt | 更新日期: 2023-09-27 18:03:03

我已经得到了这段代码,用于将字节数组写入文本文件以进行调试:

string path = @"'LOG'WrittenData.txt";
. . .
if( bWriter != null )
{
    if( bWriter.BaseStream.CanWrite )
    {
        bWriter.Write( readbuffer, 0, numberOfBytesRead );
        //TODO: Remove after testing
        WriteByteArrayToFile(path, readbuffer);
    }
}

public static bool WriteByteArrayToFile(string fileName, byte[] readBuffer) 
{ 
    try
    {
        FileStream _FileStream = new FileStream(fileName, FileMode.Append, FileAccess.Write);
                _FileStream.Write(readBuffer, 0, readBuffer.Length);
    }
    catch (Exception ex)
    { 
        MessageBox.Show(ex.Message);
    } 
    return false;
}

…不幸的是,它失败了,标题中有err MSG。

更新

好的,我试过了在finally中加一个close的建议。然而,它无法编译!下面显示的可以,被注释掉的不可以!什么! ? !

try
{
    // Open file for reading. // changed from FileMode.Create to FileMode.Append
    System.IO.FileStream _FileStream = new FileStream(fileName, FileMode.Append, FileAccess.Write);
    _FileStream.Write(readBuffer, 0, readBuffer.Length);
    _FileStream.Close();
}   
finally
{
    ;//_FileStream.Close(); <-- won't compile - "The type or namespace name '_FileStream' could not be found (are you missing a using directive or an assembly reference?)"
}

如何防止出现'进程无法访问文件'Bla.txt'因为它正在被另一个进程使用.错误

可能是您自己的程序使文件保持打开状态。确保每次打开文件时都关闭它?

如果你不确定这请张贴更多的代码,从你张贴它看起来像你打开相同的文件两次而不关闭它。

你有bWriter,然后你在WriteByteArrayToFile中再次打开它,没有关闭。

显然有什么东西以一种不允许写入文件的模式打开该文件。把那东西关上。

如果你不确定它打开了什么进程,你可以在进程资源管理器

中找到它http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx