2015-05-09 45 views
0

我目前正在編程一個程序,需要將多個兆字節的數據保存到文本文件。最快的方法來保存大量的行到C中的文本文件#

數據被保存在一個字符串 <列表裏面>

我當前的代碼(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(); 

可能需要多分鐘保存數據的兆字節是ungenecary ..

有沒有更快的方法來做到這一點?我聽到一些.join()的建議,但我不知道如何使用它。

幫助非常讚賞

回答

3

使用StringBuilder:

StringBuilder sb = new StringBuilder(); 
foreach (string line in allusernames) 
{ 
    sb.AppendLine(line); 
} 
string result = sb.ToString(); 

您也可以直接寫入文件:

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

而且,你是不使用路徑。

錯誤:

string speichern = "C:\\Users\\" + Environment.UserName + "\\Desktop\\scraped.txt"; 

右:

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

最好的:

string speichern = Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "scraped.txt"); 
+0

然後用它'sb.ToString();' - 作爲字符串 – Toumash

+0

有什麼優勢?輸出目錄也在哪裏? –

+0

其餘代碼相同,但連接方法更快。 StringBuilder不會創建不需要的對象,因此加入約多個約束會更快。 1000字符串 – Toumash

相關問題