2012-03-17 73 views
3

我遇到FileStreams問題。我正在爲正在編寫的FPGA項目編寫一個C#串行接口,它接收一個數據包(包含16個字節),並創建字節並將其寫入文件,然後添加到創建的文件中。文件流創建或附加問題

該程序不會拋出任何錯誤,但似乎不會過去創建文件,也不會寫入任何數據。

任何想法?有沒有更好的方法來OpenOrAppend文件?

由於事先 邁克爾

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() - 處置流將爲您做到這一點。 不確定不寫數據...你試圖追蹤你的代碼嗎?

所以首先我想你的代碼減少

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

然後揣摩究竟在oldData

+0

謝謝,這是有用的知道。我一直在追蹤代碼,看來問題可能是我傳遞給函數的整數。我會進一步調查。 – TheEngineerer 2012-03-17 16:05:46

+0

謝謝你的幫助 – TheEngineerer 2012-03-17 16:06:17

+0

好的,這個問題很簡單/愚蠢。我已經設置了一個整數到錯誤的值(用十六進制指定它,把它想成十進制)。謝謝你的代碼減少,非常感謝。 – TheEngineerer 2012-03-17 16:10:00