0

我有这段代码可以将字节数组写入文本文件以进行调试:

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;
}

...不幸的是,它在标题中显示错误消息而失败。

更新

好的,我尝试尝试在 finally 中关闭的建议。但是,它不会编译!下面显示的是,注释掉的不是!什么!?!

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?)"
}
4

2 回答 2

1

显然,该文件以不允许写入文件的模式打开。关闭那个东西。

如果您不确定打开的是哪个进程,您可以使用 Process Explorer 找到它

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

于 2013-03-07T18:20:12.250 回答
1

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

如果您不确定这一点,请发布更多代码,从您发布的内容来看,您似乎打开同一个文件两次而不关闭它。

你有bWriter然后你在WriteByteArrayToFile没有关闭的情况下再次打开它。

于 2013-03-07T18:20:48.277 回答