我的問題是將一些關于passangers 的資料寫入MemoryStream檔案,然后將其復制到檔案中。我需要用兩種不同的方法來實作它。在我需要使用的方法中Stream,然后在Main函式中我使用MemoryStream. 所以我寫了這段代碼:
public static void WriteToStream(Stream stream)
{
Random rnd = new();
StreamWriter sw = new(stream);
for (int i = 0; i < 100; i )
{
sw.WriteLine(i);
sw.WriteLine($"Passanger{i}");
sw.WriteLine(rnd.Next(0, 2) == 1);
}
}
public static void CopyFromStream(Stream stream, string filename)
{
using var fs = File.Open(filename, FileMode.OpenOrCreate);
stream.CopyTo(fs);
}
主功能:
MemoryStream ms = new();
StreamService.WriteToStream(ms);
ms.Seek(0, SeekOrigin.Begin);
StreamService.CopyFromStream(ms, "database.dat");
但是當我打開檔案時,我看到并不是所有的passangers。我需要寫100個passangers(根據第一種方法的回圈)但只有87個passangers。檔案如下所示:
//some other passangers from 0 to 82, everything is fine with them
83
Passanger83
False
84
Passanger84
False
85
Passanger85
True
86
Passanger86
False
87
Passanger87
T
正如您在檔案末尾看到的那樣,該True陳述句已損壞并且此檔案中沒有足夠的passangers。有人可以告訴我有什么問題嗎?
PS 我今天已經在另一個問題中發布了這段代碼,但現在我解決了以前的問題。現在我有另一個問題,所以它不是重復的。
uj5u.com熱心網友回復:
嘗試在您的方法中設定StreamWriter.AutoFlush屬性:trueWriteToStream
StreamWriter sw = new(stream) { AutoFlush = true };
并添加手動洗掉您的檔案,如果它存在以正確覆寫:
public static void CopyFromStream(Stream stream, string filename)
{
if (File.Exists(filename))
File.Delete(filename);
using var fs = File.Open(filename, FileMode.OpenOrCreate);
stream.CopyTo(fs);
}
經過多次迭代測驗并運行良好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/318458.html
上一篇:將多個python檔案從一個單獨的檔案夾匯入到一個單獨的其他python檔案中
下一篇:在檔案中查找內容并替換所有行
