我遇到了FileStreams的问题。我正在为我正在处理的FPGA项目编写C#串行接口,接收数据包(包含16个字节)创建并将字节写入文件,然后附加到创建的文件。
程序没有抛出任何错误,但似乎没有过去创建文件,也没有向它写入任何数据。
任何想法?有没有更好的方法来OpenOrApend文件?
先谢谢, 迈克尔
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;
}
}
答案 0 :(得分:7)
FileMode.Append
已经意味着“创建或追加”,所以实际上您只需要else {}
的{{1}}部分。您也无需致电if
或Flush()
- 处理流将为您完成此操作。
不确定不写数据......你是否试图追踪你的代码?
首先,我会将您的代码缩减为
Close()
然后尝试计算private void SendReceivedDataToFile(int sendBytes)
{
using (var fs = new FileStream(tbSaveDirectory.Text, FileMode.Append))
fs.Write(oldData, 0, sendBytes);
readByteCount += sendBytes;
}
中的确切内容。