2015-07-13 29 views
-1

我有这样的代码,蚂蚁它的正常工作:C#读取网页价值,创造的foreach

FileNameAndSizes.Add("file1.dll", 17662); 
FileNameAndSizes.Add("file2.dll", 19019); 

但我wan't从我的网站给它(http://example.com/dll_files.ini

在我dll_files .ini:

file1.dll,17662 
file2.dll,19019 

我知道我必须使用foreach。我创造了这个代码:

WebClient client = new WebClient(); 
Stream stream = client.OpenRead("http://example.com/dll_files.ini"); 
TextReader reader = new StreamReader(stream); 
String content = reader.ReadToEnd(); 

我wan't给从dll_files.ini和翻拍值要FileNameAndSizes.Add( “file1.dll”,17662);文件名...

接下来是什么?请帮助,我是C#的新手,非常感谢,P.S我不是英语 P.S.S是存在更快的方法来从Web获得价值?因为StreamReader的〜2秒装载

+0

你能提供content'您是从网络接收字符串'的内容是什么? –

+0

在我的dll_files.ini中: file1.dll,17662 file2.dll,19019 – EvaldasL

+0

我编辑了答案,假设你有''file1.dll,17662 \ nfile2.dll,19019';'格式。尝试一下。 –

回答

0

试试这个

 Dictionary<string, long> FileNameAndSizes = new Dictionary<string, long>(); 
     WebClient client = new WebClient(); 
     Stream stream = client.OpenRead("http://example.com/dll_files.ini"); 
     TextReader reader = new StreamReader(stream); 
     String content = reader.ReadToEnd(); 

     var splitsByLine = content.Split('\n'); //Assuming contents has "file1.dll,17662\nfile2.dll,19019"; 
     foreach (var s in splitsByLine) 
     { 
      var nameAndSize = s.Split(','); 
      FileNameAndSizes.Add(nameAndSize[0], Convert.ToInt64(nameAndSize[1])); 
     } 

穿越......

foreach (var fileNameAndSize in FileNameAndSizes) 
     { 
      var name = fileNameAndSize.Key; 
      var size = fileNameAndSize.Value;     
      //Other something ... 
     } 
+0

谢谢,但事实并非如此,我需要从我的web文件中获取价值,并将这些“file1.dll,17662 file2.dll,19019”替换为FileNameAndSizes.Add(“file.1”,17662); – EvaldasL

+0

@EvaldasL您的网站是否像例如'file1.dll,1214,file2.dll,4545'等那样返回字符串? –

+0

是的,我不想创建FileNameAndSizes.Add(firstvalue); FileNameAndSizes.Add(secondvalue); etc .. // firstvalue is file1.dll,1214 // secondvalue is file2.dll,4545 – EvaldasL