2012-10-09 56 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[] 

顺便说一下,该语句甚至在语法上都不正确 - 您的右括号缺失。