使用C#逐个检索文件行?

时间:2010-06-03 11:06:34

标签: c#

我有一个文件名 abc.txt 。在该文件上有这样的行:

  

jani
50,南卡罗莱纳州,美国
  karim
16,roam,Italy
fara
  52,sydny,澳大利亚

第一行是名称,第二行是地址。现在我需要字符串上的信息名称,例如 nameString ,地址就是说 addressString 。我怎么能用C#做到这一点? 我在PHP中编写了一个代码,它运行顺畅。我在C#中需要相同的东西。对于你的澄清,这里是php代码:

$file=file_get_contents('abc.txt');

$arr=explode("\n",$file);
for ($i=0;$i<count($arr);$i=$i+2)
{

    $name=$arr[$i];
    $address=$arr[$i+1];
    echo $name ."<br/>";
    echo $address. "<br/>";

}

我怎样才能在C#中做同样的事情? 另一个问题:C#中的任何函数是否像在php中爆炸一样?

提前致谢
里亚德

5 个答案:

答案 0 :(得分:2)

这是一个简单的例子:

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            TextReader reader = new StreamReader(File.OpenRead("c:\\myfile.txt"));

            string line = reader.ReadLine();

            while (!String.IsNullOrEmpty(line))
            {
                // do stuff. 
            }

            reader.Close();
        }
    }
}

答案 1 :(得分:1)

string[] arr = System.IO.File.ReadAllLines(filename)
for (int i = 0; i<arr.Length; i += 2)
{
  // do whatever you need here
}

答案 2 :(得分:0)

您可以使用文件流来阅读它

答案 3 :(得分:0)

using(var reader = new StreamReader("bla.txt"))
{
     string content = reader.ReadToEnd();

     string[] rows = content.Split('\n');

     foreach (var s in rows)
     {
          //output it somewhere
     }
}

答案 4 :(得分:0)

正如Joakim回答的那样,取代内爆就是分裂。

您还应该考虑换行符,并使用Environment.NewLine(可能是\ n或\ r或\ r \ n)

此外,通常从一种语言“翻译”到另一种语言并不是最佳解决方案。如果要在这种情况下使用等效的implode,则不会逐行读取文件,而是使用ReadToEnd()然后拆分结果。这将忽略为此目的而创建的ReadLine方法。