2011-07-28 89 views
0

此準備工作旨在從富文本框(即用逗號分隔的用戶列表)中取文本,然後將它們寫入各自的行中。將逗號分隔的字符串逐行寫入文件

但是,它沒有。我做錯了什麼?

if (chkWhiteList.Checked) 
     { 
      string rawUser = rtboxWhiteList.Text; 
      string[] list = rawUser.Split(new char[] { ',' }); 

      foreach (string user in list) 
      { 
       using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt")) 
       { 
        whiteList.WriteLine(String.Format("{0}\r\n", user)); 
       } 
      } 
     } 
+4

它有什麼作用呢?你有錯誤嗎? –

+1

是WhiteList.Checked爲真?另外WriteLine應該爲你處理換行符,所以你不需要\ r \ n。 –

+0

您的代碼是正確的,但由於這是一個Web應用程序,我會檢查該asp.net帳戶是否有權限在cleanDir中創建文件。 – Icarus

回答

2

解決試試這個....

if (chkWhiteList.Checked) 
    { 
     string rawUser = rtboxWhiteList.Text; 
     string[] list = rawUser.Split(new char[] { ',' }); 

     using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt")) 
      { 
       foreach (string user in list) 
       { 
        whiteList.WriteLine(String.Format("{0}\r\n", user)); 
       } 

      } 
    } 
+0

這工作!謝謝! – MrDKOz

2
 { 
      using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt")) 
      { 
       whiteList.WriteLine(String.Format("{0}\r\n", user)); 
      } 
     } 

這將每次重寫該文件與該用戶的單個線。

移動圍繞foreach的公開聲明以將所有用戶名寫入文件。

3

你的foreach和你的使用是錯誤的方式。你需要用這個來設置streamwriter,然後做一個循環(foreach)來寫這些行。

if (chkWhiteList.Checked) 
    { 
     string rawUser = rtboxWhiteList.Text; 
     string[] list = rawUser.Split(new char[] { ',' }); 

     using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt")) 
     { 
      foreach (string user in list) 
      { 
       whiteList.WriteLine(String.Format("{0}\r\n", user)); 
      } 
     } 
    } 

(這是你的代碼的黑客粗糙)。

5

我會交換你usingfor loop左右。並刪除新行字符

using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt")) 
{ 
    foreach (string user in list) 
    { 
     whiteList.WriteLine(user); 
    } 
} 
0

的調用的WriteLine附加一個CRLF,但你的String.Format是包括額外的CRLF。所以你會得到每個用戶兩行。

而using語句需要超出你的foreach(字符串用戶在ist中)。

1

這可能是很容易File.WriteAllLines

string rawUser = rtboxWhiteList.Text;    
string[] list = rawUser.Split(','); 
System.IO.File.WriteAllLines(cleanDir + @"\white-list.txt", list);