6
我想弄清楚我在做什麼錯在這裏。我試圖使用二進制閱讀器來緩解從流中獲取最初的四個字節到一個Int32值,告訴我剩餘數據需要多長時間。C#BinaryReader.Read()獲取垃圾開始
static void Main(string[] args)
{
MemoryStream stream = new MemoryStream();
BinaryWriter writer = new BinaryWriter(stream);
string s = "Imagine this is a very very long string.";
writer.Write(s.Length);
writer.Write(s);
writer.Flush();
BinaryReader reader = new BinaryReader(stream);
reader.BaseStream.Seek(0, SeekOrigin.Begin);
char[] aChars = new char[reader.ReadInt32()];
reader.Read(aChars, 0, aChars.Length);
Console.WriteLine(new string(aChars));
}
輸出應該是輸入,但我得到這個(請注意,從字符串的第一個字符更改爲字符串)
(想象一下,這是一個非常非常長的字符串
有人可以向我解釋我做錯了什麼?理想情況下,第二次讀取將繼續,直到總讀取字節等於前四個字節的值。此代碼只是一個簡化,以顯示我遇到的問題。流的位置似乎相反ect(4),但它幾乎看起來像從2開始讀取。
MSDN,你想讀它。 – jason 2010-11-24 00:13:01
呵呵,謝謝......而我是。對我來說不幸的是,BinaryReader沒有提及Writer存儲字符串的額外數據而不是字符串;) – James 2010-11-24 00:28:06