写入文本文件并在特定位置开始
问题描述:
我编写了一个程序来创建一个文件类型。规范表明,我必须有一定的限定因素,因为同一行上的字符串对它们的可能长度和它们的起始位置有限制。写入文本文件并在特定位置开始
例如,
我想写一个文本文件。
第一行应显示“TEST1”字符串,该字符串将从第一行的0位置开始,并创建总计数为10的空间。所以字符串后面会有5个空格。
在第11个位置的同一行上,它会写入“TEST2”,总计数为10,因此字符串后面会有5个空格。
“TEST1”和“TEST2”的字符串可以随时从1-10个字符改变。
我已经试过的String.format(“{0,10}”,看来,它允许终止在第10位,但不是我所期待的。
这是一个FNMA文件。
答
可以使用AREADY建议的方法,但你必须知道,如果该文件是在UTF-8
格式,你需要跳过UTF-8 BOM (header),你可以用UTF8Encoding.GetPreamble Method获取和传递编码构造true
becasue被默认你止跌”对于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();
使用File.Seek()方法设置你想从哪里开始写的位置 – erem 2015-01-04 14:46:46
你应该尝试'String.Format(“{0,-10}”,...)',或者更好的办法是使用“StreamWriter”的等效方法。但要小心:如果字符串比指定的宽度长,它会溢出并且错位所有下列字段。 – 2015-01-04 15:06:15
您应该决定在所有字符具有相同字节数的情况下使用编码,例如ASCII或UTF-16。如果您使用UTF-8,那么可能无法预测10个字符需要多少个字节。 – RenniePet 2015-01-04 18:53:54