在 C# 中将大量行保存到文本文件的最快方法

tim*_*_po 1 c# save

我目前正在编写一个程序,需要将数兆字节的数据保存到文本文件中。

该数据保存在字符串 <list> 内

我当前的代码(allusernames 是列表变量名称)

      string alltoappend = "";
        string speichern = "C:\\Users\\" + Environment.UserName + "\\Desktop\\scraped.txt";
        progressBarSetValue(progressBar1, 100);
        MessageBox.Show("Done scraping!\nNow saving all the usernames to:\n" + speichern + "\nThis might take a while");
        foreach (string linelist in allusernames)
        {

            alltoappend = alltoappend + "\n" + linelist;
        }

        File.AppendAllText(speichern, alltoappend, Encoding.UTF8);



        System.Diagnostics.Process.Start(speichern);
        allusernames.Clear();
Run Code Online (Sandbox Code Playgroud)

保存一兆字节的数据可能需要几分钟的时间,这是不必要的。

有没有更快的方法来做到这一点?我听到了人们的一些 .join() 建议,但我不知道如何使用它。

非常感谢帮助

Gen*_*mer 5

使用字符串生成器:

StringBuilder sb = new StringBuilder();
foreach (string line in allusernames)
{
    sb.AppendLine(line);
}
string result = sb.ToString();
Run Code Online (Sandbox Code Playgroud)

您也可以直接写入文件:

using (var stream = File.OpenWrite(filename))
{
    using (var writer = new StreamWriter(stream))
    {
        foreach (string line in allusernames)
        {
            writer.WriteLine(line);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并且不要按原样使用路径。

错误的:

string speichern = "C:\\Users\\" + Environment.UserName + "\\Desktop\\scraped.txt";
Run Code Online (Sandbox Code Playgroud)

正确的:

string speichern = Path.Combine("C:\\Users", Environment.UserName , "Desktop\\scraped.txt");
Run Code Online (Sandbox Code Playgroud)

最好的:

string speichern = Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "scraped.txt");
Run Code Online (Sandbox Code Playgroud)