当我使用System.IO.File.WriteAllLines保存String []数组的内容时,在文件末尾总是留下一个空行.例如:
System.IO.File.WriteAllLines(Application.dataPath + "/test.txt",["a", "b", "c"]);
Run Code Online (Sandbox Code Playgroud)
生成文件(没有下划线):
a
b
c
_
Run Code Online (Sandbox Code Playgroud)
已经有这样一个主题:.Net File.WriteAllLines中的空行,是一个错误吗?但是,autor说"我认为我的数据存在问题,这是我的问题,但不是WritAllLines",它被关闭为"过于本地化"(?!?).
这是一个错误?我怎样才能轻松摆脱它(现在我只是在再次阅读文件时忽略它)?
Dan*_*ker 14
正如其他人所指出的那样,这就是它的运作方式.这是一个没有额外换行符的方法:
public static class FileExt
{
public static void WriteAllLinesBetter(string path, params string[] lines)
{
if (path == null)
throw new ArgumentNullException("path");
if (lines == null)
throw new ArgumentNullException("lines");
using (var stream = File.OpenWrite(path))
using (StreamWriter writer = new StreamWriter(stream))
{
if (lines.Length > 0)
{
for (int i = 0; i < lines.Length - 1; i++)
{
writer.WriteLine(lines[i]);
}
writer.Write(lines[lines.Length - 1]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
FileExt.WriteAllLinesBetter("test.txt", "a", "b", "c");
Run Code Online (Sandbox Code Playgroud)
写道:
aenter benter c
小智 9
您还可以使用 WriteAllText 保存文件并手动连接行数组,例如:
File.WriteAllText(file, String.Join("\r\n",correctedLines));
Run Code Online (Sandbox Code Playgroud)
该WriteAllLines方法将写出数组中的每一行,然后换行.这意味着您将始终在文件中获得此"空行".
您链接的帖子中的要点是,在运行时ReadAllLines将行视为由换行符终止的字符.因此,当您在刚刚编写的文件上使用read方法时,您应该返回完全相同的行.
如果您以不同的方式阅读文件,则必须自己处理换行符.
基本上你所看到的是预期行为.
| 归档时间: |
|
| 查看次数: |
7568 次 |
| 最近记录: |