読むために私はこのコードを試しました:
Form1の上部で私はしました:
Dictionary<string, List<string>> LocalyKeyWords = new Dictionary<string, List<string>>();
コンストラクターで私はしました:
keywords = @"d:\Keywords.txt";
if (File.Exists(keywords))
{
LoadKeys(LocalyKeyWords, keywords);
}
関数LoadKeys:
private void LoadKeys(Dictionary<string,List<string>> disctionary, string FileName)
{
var lines = File.ReadAllLines(keywords).Select(l => l.Split(','));
var dict = new Dictionary<string, List<string>>();
foreach(var splits in lines)
{
var key = splits.First();
var value = splits.Skip(1).ToList();
try {dict.Add(key, value);
}
catch(Exception ex)
{ } }
}
例外はありませんが、関数を呼び出してすべてが実行された後のコンストラクターでは、LocalyKeyWordsは空です。
これは、今日のファイルへのキーと値の書き込み方法です。
private void button6_Click(object sender, EventArgs e)
{
using (var w = new StreamWriter(keywords))
{
crawlLocaly1 = new CrawlLocaly();
crawlLocaly1.StartPosition = FormStartPosition.CenterParent;
DialogResult dr = crawlLocaly1.ShowDialog(this);
if (dr == DialogResult.OK)
{
if (LocalyKeyWords.ContainsKey(mainUrl))
{
LocalyKeyWords[mainUrl].Clear();
LocalyKeyWords[mainUrl].Add(crawlLocaly1.getText());
}
else
{
LocalyKeyWords[mainUrl] = new List<string>();
LocalyKeyWords[mainUrl].Add(crawlLocaly1.getText());
}
foreach (KeyValuePair<string, List<string>> kvp in LocalyKeyWords)
{
w.WriteLine(kvp.Key + "," + string.Join(",", kvp.Value));
}
}
}
}
コンストラクターでのキーと値のロードを解決し、button6clickイベントでキーまたは値を変更するたびに書き込む方法の問題を解決できるようになるかもしれません。