簡體   English   中英

將MemoryStream轉換為FileStream時FileStream數據不完整

[英]FileStream Data Incomplete when Converting MemoryStream to FileStream

我正在嘗試使用從數據庫檢索的數據創建制表符分隔的文件。 使用MemoryStream創建StreamWriter並對其進行寫入的方法似乎可以正常工作-“ while(rdr.Read())”循環執行約40次。 但是,當我使用將MemoryStream轉換為FileStream的方法時,生成的制表符分隔的文件僅顯示34行,而第34行甚至不完整。 某種限制了輸出。 數據本身也沒有發現任何會導致其突然終止的錯誤。

這是轉換方法:

protected internal static void ConvertMemoryStreamToFileStream(MemoryStream ms, String newFilePath){
        using (FileStream fs = File.OpenWrite(newFilePath)){
            const int blockSize = 1024;
            var buffer = new byte[blockSize];
            int numBytes;
            ms.Seek(0, SeekOrigin.Begin);
            while ((numBytes = ms.Read(buffer, 0, blockSize)) > 0){
                fs.Write(buffer, 0, numBytes);
            }
        }
    }

感謝您提供任何幫助。

自己找到解決方案,因為沒有人會提供幫助。 :(

在將數據寫入MemoryStream的方法中,您需要在開始將其轉換為FileStream的方法之前將其添加到最后(其中streamWriter是寫入到MemoryStream的StreamWriter):

streamWriter.Flush();

顯然,這意味着將所有“緩沖”數據添加到流中。 處理內存很爛。

如果使用的是.Net 4.0+,則可以使用新的Stream.CopyTo接口:

ms.Seek(0, SeekOrigin.Begin);
using (var output = File.OpenWrite(newFilePath))
{
    ms.CopyTo(output);
}

處理output時,將刷新數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM