文件流创建或附加问题

时间:2012-03-17 15:45:04

标签: c# filestream

我遇到了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;
        }
    }

1 个答案:

答案 0 :(得分:7)

FileMode.Append已经意味着“创建或追加”,所以实际上您只需要else {}的{​​{1}}部分。您也无需致电ifFlush() - 处理流将为您完成此操作。 不确定不写数据......你是否试图追踪你的代码?

首先,我会将您的代码缩减为

Close()

然后尝试计算private void SendReceivedDataToFile(int sendBytes) { using (var fs = new FileStream(tbSaveDirectory.Text, FileMode.Append)) fs.Write(oldData, 0, sendBytes); readByteCount += sendBytes; } 中的确切内容。