我正在编写一个程序来创建一种文件。规范表明我必须有一些划界因素,因为同一行上的字符串限制了它们的长度以及它们在线上的起始位置。
例如。
我正在尝试编写一个文本文件。
第一行应显示字符串“TEST1”,该字符串将从第一行的0位置开始,并为总计数为10创建空格。因此字符串后面将有5个空格。
在第11个位置的同一行,它会写入“TEST2”,总数也会为10,所以字符串后面会有5个空格。
“TEST1”和“TEST2”的字符串可以随时更改为1-10个字符。
我尝试过String.format(“{0,10}”,它似乎允许它在第10个位置结束但不是我想要的结果。
这是针对FNMA文件的。
答案 0 :(得分:1)
您可以使用isady建议的方法,但您必须知道如果文件采用UTF-8
格式,您需要跳过UTF-8 BOM (header)所带来的UTF8Encoding.GetPreamble Method和传递编码构造函数true
因为默认情况下你不会得到它。对于ASCII文件,偏移量为0。
var value = string.Format("{0,-10}", "TEST33");
FileStream fs = File.OpenWrite("test.txt");
System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding(true);
int preamble = enc.GetPreamble().Length;
var bytes = enc.GetBytes(value);
fs.Seek(preamble, SeekOrigin.Begin);
fs.Write(bytes, 0, bytes.Length);
fs.Close();