我尝试在C#中使用此empty()
类方法编写文件。
File
行尾为public static void WriteAllLines(string path, IEnumerable<string> contents);
,但我需要CRLF
。
答案 0 :(得分:4)
WriteAllLines
使用StreamWriter将行写入文件,使用NewLine属性中指定的换行符。
您可以在自己的代码中使用StreamWriter,并使用\n
代替\r\n
。这样可以避免字符串连接并生成临时字符串:
using (var writer = new StreamWriter(path))
{
writer.NewLine = "\n";
foreach (var line in contents)
{
writer.WriteLine(line );
}
}
直接使用StreamWriter也可以使用异步方法:
public async Task MyMethod()
{
....
using (var writer = new StreamWriter(path))
{
writer.NewLine = "\n";
foreach (var line in contents)
{
await writer.WriteLineAsync(line);
}
}
....
}
在编写大型文件时,在服务器和Web应用程序以及要保持最低限度阻止的网站中,这可能是一个很大的好处
答案 1 :(得分:2)
有很多方法可以写入文件,我只是选择不同的文件 - 只有几行:
using (var writer = new StreamWriter(path)) {
foreach (var line in contents) {
writer.Write(line + "\n");
}
}
答案 2 :(得分:0)
您可以自己加入字符串并使用WriteAllLines()
,而不是使用WriteAllText()
:
File.WriteAllText(string path, string.Join("\n", contents) + "\n");
答案 3 :(得分:0)
var builder = new StringBuilder();
for (int i = 0; i < 99999; i++)
{
builder.Append(i.ToString() + '\n');
}
File.WriteAllText("asd.txt", builder.ToString());
这显然是使用样板代码。请注意,使用StringBuilder
代替string[]
也会更快。
答案 4 :(得分:0)
我会这样做,它避免重写内存并快速工作。这假设您只使用ASCII并且不需要覆盖该文件 - 否则使用不同的编码并相应地更改文件模式。
public static void WriteAllLines(string path, IEnumerable<string> contents)
{
using (var s = new FileStream(path, FileMode.Append))
{
foreach (var line in contents)
{
var bytes = Encoding.ASCII.GetBytes($"{line}\r");
s.Write(bytes,0,bytes.Length);
}
s.Flush();
s.Close();
}
}