将byte []写入二进制文件的最佳方法

时间:2017-03-03 11:31:36

标签: c# arrays binaryfiles binarywriter

我在服务器A中有1GB,我必须使用Read()方法将其发送到本地。它被分成包(16517包)。每个包都是65536字节,包括头。

目前,我使用BinaryWriter直接将每个包写入文件。但它花了我超过5分钟(323642毫秒)。

我尝试将一些软件包加入到10MB的byte[]中,但它不会减少时间(317397毫秒)。

哪种方式最好将byte[]写入二进制文件?

更新

const ulong Memory_10MB = 10485760; // 10MB
do {
    byte[] packetData = Read(&totalSize, /*Other parameters*/ ,&hasFollowing);
    if (package == null) {
        // Process error
        return;
    }
    dataSize += (ulong)packetData.Length;
    if (dataSize >= Memory_10MB)
    {
        if (binaryWriter == null)
        {
            path = Path.GetTempFileName();
            fileStream = new FileStream(path, FileMode.Append, FileAccess.Write, FileShare.Read);
            binaryWriter = new BinaryWriter(fileStream);
            if (responseData.Length > 5)
            {
                binaryWriter.Write(responseData.Skip(5).ToArray());
            }
        }           
        binaryWriter.Write(packetData);
    }
    else
    {
        responseData = Utilities.ConcatArrays(responseData, packetData);
    }

} while (dataSize < totalSize);
// Process after got data

1 个答案:

答案 0 :(得分:1)

  

哪种方法最好将byte []写入二进制文件?

直接发送到FileStream。 BinaryWriter只是增加了一点开销。

应该(可能)针对您的硬件优化软件包大小,但通常默认值应该足够。