【发布时间】:2014-11-08 14:55:40
【问题描述】:
我正在制作一个简单的程序,我想在文件开头写下一节的大小。当我在记事本中打开文件时,大小已正确写入。但是,当我尝试在程序中解析它时,我得到“输入字符串的格式不正确”。例外。 这是我用来将其写入文件的代码:
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 是一个结构或类,它是如何定义的?
-
Header 只是一个字符串属性!
标签: c# file string-formatting filestream streamwriter