2012-10-09 89 views
-1

我有這樣的功能:如何將列表中的值寫入文本文件?

private void button6_Click(object sender, EventArgs e) 
{ 
    crawlLocaly1 = new CrawlLocaly(); 
    crawlLocaly1.StartPosition = FormStartPosition.CenterParent; 
    DialogResult dr = crawlLocaly1.ShowDialog(this); 
    if (dr == DialogResult.Cancel) 
    { 
     crawlLocaly1.Close(); 
    } 
    else if (dr == DialogResult.OK) 
    { 
     //LocalyKeyWords.Add(crawlLocaly1.getText() + "," + mainUrl); 
     if(LocalyKeyWords.ContainsKey(mainUrl)) 
     { 
      LocalyKeyWords[mainUrl].Add(crawlLocaly1.getText()); 


     } 
     else 
     { 
      LocalyKeyWords.Add(mainUrl, new List<string>(new string[] 
      { 
       crawlLocaly1.getText() 
      } 
      )); 
     } 
     crawlLocaly1.Close(); 
    } 
} 

當用戶類型的東西文本框,然後點擊OK因此結果在作爲字典的LocalKeyWords>是這樣的:

在索引0會有例如: http://www.google.com「」谷歌 如果谷歌是屬於http://www.google.com

現在,如果用戶輸入一個關鍵詞,一旦到URL將進入第二部分,如果用戶更改密鑰對同一個URL關鍵,這將進入第一部分e如果用戶更改了網址,那麼它會轉到第二部分。

第一次爲網址添加密鑰,第二次更新同一網址的密鑰或爲新網址添加新密鑰。

所以列表應該是這樣的:

index 0 http://www.google.com,google 
index 1 http://www.microsoft.com,com 

等等...... 而這個功能是否正常工作我只需要在列表中添加到一個文本文件在硬盤上。 因此,在Form1級別我有Streamwriter w = new streamwriter(@「d:\ test.txt」);

事實上,當我使用我在左邊的網址看到那麼列表中的一個斷點,然後我看到別的東西不關鍵字:

[0] = {[http://www.google.co.il, System.Collections.Generic.List`1[System.String]]} 

它不是一個錯誤或東西,它只是在我看到它的斷點上。而不是System.Collections.Generic.List`1 [System.String]我假設看到關鍵字,例如:谷歌

無論如何我寫的列表值的文本文件,所以文本文件格式將像這樣:

0 http://www.google.com,google 
1 http://www.microsoft.com,hello 
2 http://www.cnet.com,Daniel 

0 1 2存在的指數法和url的存在的mainUrl和右SIE存在的鍵(關鍵字用戶輸入)。

然後我該如何讀取文本文件中的值到lixtBox? 所以,當我在構造函數中運行的程序會讀取文本文件,並告訴我在ListBox這種格式:

url: http://www.google.com --- keword: google 
url: http://www.microsoft.com --- keword: hello 
url: http://www.cnet.com --- keword: Daniel 

所以在列表框中,用戶將看到它更好然後在文本文件中。

回答

0

你可以試試這個簡單的代碼寫入文本文件你的價值觀:

 int count = 0; 
     foreach(KeyValuePair<string, string> kvp in LocalyKeyWords) 
     { 
      w.WriteLine(count.ToString() + " " + kvp.Key + " " + kvp.Value); 
      count++; 
     } 
     w.Close(); 

您也可以使用下面的代碼讀取文本文件,我必須警告你,如果你有三個不檢查在文本文件中用空白字符分隔的字符串。此外,如果您正在存儲的文本具有空白字符,則應該使用某些特殊字符將文件中的字符串分開。

 TextReader r = new StreamReader(@"d:\test.txt"); 
     string line = string.Empty; 
     while ((line = r.ReadLine()) != null) 
     { 
      string[] data = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 
      ListViewItem lvi = new ListViewItem("url: " + data[1] + " " + data[2]); 
      listView1.Items.Add(lvi); 
     } 
0

調試器告訴你什麼是準確的。您將字符串列表添加到集合中,而不是字符串,這就是調試器向您顯示列表而不是字符串的原因。認爲這些工具是錯誤的是一個新手錯誤。

LocalyKeyWords.Add(mainUrl, new List<string>(new string[] 

順便說一下,該語句甚至在語法上都不正確 - 您的右括號缺失。