2012-03-17 14 views
3

FileStreamに問題があります。私は、パケット(16バイトを含む)を受信して​​バイトをファイルに書き込み、続いて作成したファイルに追加するFPGAプロジェクト用のC#シリアルインターフェイスを作成中です。Filestreamは問題を作成または追加します

このプログラムではエラーは発生していませんが、ファイルの作成中には表示されず、データも書き込まれません。

すべてのアイデア? OpenOrのファイルを添付するのに良い方法はありますか?事前に

おかげで、 マイケル

private void SendReceivedDataToFile(int sendBytes) 
    { 
     if (saveFileCreated == false) 
     { 
      FileStream writeFileStream = new FileStream(tbSaveDirectory.Text, FileMode.Create); 
      writeFileStream.Write(oldData, 0, sendBytes); 
      writeFileStream.Flush(); 
      writeFileStream.Close(); 
      saveFileCreated = true; 
      readByteCount = readByteCount + sendBytes; 
     } 
     else 
     { 
      using (var writeFilestream2 = new FileStream(tbSaveDirectory.Text, FileMode.Append)) 
      { 
       writeFilestream2.Write(oldData, 0, sendBytes); 
       writeFilestream2.Flush(); 
       writeFilestream2.Close(); 
       readByteCount = readByteCount + sendBytes; 
      } 
     } 

     if (readByteCount == readFileSize)      // all data has been recieved so close file. 
     { 
      saveFileCreated = false; 
     } 
    } 

答えて

7

FileMode.Appendはすでにので、本当にあなただけのifelse {}一部を必要とし、「作成または追加」を意味します。また、Flush()またはClose()に電話する必要はありません。ストリームを廃棄すると、それが行われます。 データを書き込んでいないことがわかりました...コードをトレースしようとしましたか?

だから最初に私は、まさにoldDataに理解しよう

private void SendReceivedDataToFile(int sendBytes) 
{ 
    using (var fs = new FileStream(tbSaveDirectory.Text, FileMode.Append)) 
     fs.Write(oldData, 0, sendBytes); 
    readByteCount += sendBytes; 
} 

にあなたのコードを減少させるであろう。

+0

ありがとう、それは知っておくと便利です。私はコードをトレースしてきましたが、問題は関数に渡す整数になる可能性があります。私はさらに調査します。 – TheEngineerer

+0

あなたの助けをありがとう – TheEngineerer

+0

それは、愚か/自明であったことが判明した問題です。整数を間違った値に設定していました(10進数で指定して16進数で指定しました)。コードの縮小をありがとうございました。 – TheEngineerer

関連する問題