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

...残念ながら、タイトルにerrmsgが含まれていると失敗します。

アップデート

さて、ようやく近づいてみようという提案をしてみました。ただし、コンパイルされません!以下に示されていることは行いますが、コメントアウトされていることは行いません!何!?!

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

何かが明らかに、ファイルへの書き込みを許可しないモードでそのファイルを開いています。そのことを閉じます。

どのプロセスで開いているかわからない場合は、ProcessExplorerで確認できます。

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

于 2013-03-07T18:20:12.250 に答える
1

独自のプログラムがファイルを開いたままにしている可能性があります。ファイルを開くたびにファイルを閉じていることを確認しますか?

これがわからない場合は、さらにコードを投稿してください。投稿した内容から、同じファイルを閉じずに2回開いているように見えます。

あなたは持っていてbWriter、それからあなたはそれを閉じずに再び開きますWriteByteArrayToFile

于 2013-03-07T18:20:48.277 に答える