我正在製作一個簡單的程序,在該文件的開始位置我想寫下一節的大小。當我在記事本中打開文件時,大小被正確寫入。然而,當我嘗試在程序中解析它時,我得到「輸入字符串格式不正確」。例外。 下面是我用它寫入文件的代碼:當從文件(C#)讀取時,數字拒絕從字符串轉換爲int
StreamWriter writer = new StreamWriter(stream, ENCODING);
int headerSize = ENCODING.GetByteCount(Header);
writer.Write(headerSize.ToString(HEADER_SIZE_FORMAT));
writer.Write(Header);
writer.Close();
下面是我用它來嘗試,並從文件中讀取(拋出異常)的代碼:
FileStream stream = new FileStream(path, FileMode.Open);
int headerSizeLength = ENCODING.GetByteCount((0).ToString(HEADER_SIZE_FORMAT)) + ENCODING.GetByteCount("1");
byte[] headerSizeArray = new byte[headerSizeLength];
stream.Read(headerSizeArray, 0, headerSizeLength);
System.Windows.Forms.MessageBox.Show(ENCODING.GetString(headerSizeArray));
int headerSize = Convert.ToInt32(ENCODING.GetString(headerSizeArray));
(我從那裏正確關閉了流,但這並不重要,因爲這裏引用的最後一行引發了異常)
ENCODING的值當前是Encoding.Unicode。 HEADER_SIZE_FORMAT的值目前爲「0000」。
我最初想寫十六進制格式的大小(「X8」我認爲),但遇到解析同樣的問題,它改變了通常的十進制格式...
,顯示我的字符串的MessageBox在我試圖解析它之前,它顯示出正確的數字 - 0188,匹配格式和所有。
我將額外的字符長度添加到緩衝區長度,因爲在它讀取一個字符比它應該有的少,根據MessageBox和我在記事本中看到的。這可能是一個同樣的問題的症狀,但我不明白什麼是錯誤的)=
此外:當我硬編碼的數字,而不是試圖從文件解析它,其餘部分似乎解析成正確的字符串。 ..
從你的代碼看起來像Header是一個結構或類是如何定義的? – 2014-11-08 15:36:57
標題只是一個字符串屬性! – Liliet 2014-11-08 17:08:01