我需要生成一个将被另一个系统读取的文件.出于这个原因,它应该是二进制的,而不是带有某种编码的文本.
这是我正在使用的代码:
using (FileStream stream = new FileStream(fileName, FileMode.Create))
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write("Some text" + Environment.NewLine);
writer.Write("Some more text" + Environment.NewLine);
}
}
Run Code Online (Sandbox Code Playgroud)
当我打开文件并查看它时,我可以在每行的开头看到一些特殊字符,类似于此(很难将其粘贴到此处,因为它不显示相同):
〜有些文字
〜更多文字
我做错了什么/忘记了什么?
谢谢你的帮助.
没有编码就没有文本这样的概念.这就像是想要将抽象图像保存到磁盘而不指定任何图像格式.(甚至"原始"是对图像的一种编码 - 你需要就某种方式传达宽度,高度,字节顺序,颜色深度的方式达成一致.)
我建议你只修复一个编码(例如Encoding.Unicode
或者Encoding.UTF8
)并以这种方式编写文本.
至于为什么BinaryWriter.Write(text)
在每行的开始是把"特殊字符",你检查的文档为它做什么?
在BinaryWriter的当前编码中将长度为前缀的字符串写入此流,并根据使用的编码和写入流的特定字符推进流的当前位置.
和
带长字符的字符串表示字符串长度,方法是在字符串前面加上包含该字符串长度的单个字节或单词.此方法首先将字符串的长度写为UTF-7编码的无符号整数,然后使用BinaryWriter实例的当前编码将该多个字符写入流中.
所以你看到的是长度前缀...但是它将使用你为之设置的任何编码BinaryWriter
.
归档时间: |
|
查看次数: |
1446 次 |
最近记录: |