不会读第一行C#

时间:2016-10-05 15:42:19

标签: file

我遇到了C#read(){}函数的问题。当我打开并阅读我的文档时,它不会读取第一行:

  private static void read(string file, Konteineris butas)
    {
        using (StreamReader reader = new StreamReader(@file))
        {
            string line;
            line = reader.ReadLine();
            while (null != (line = reader.ReadLine()))
            {
                string[] values = line.Split(';');
                int nr = Convert.ToInt16(values[0]);
                double plotas = Convert.ToDouble(values[1]);
                int kambariusk = Convert.ToInt16(values[2]);
                int kaina = Convert.ToInt32(values[3]);
                string tnr = values[4];
                Apartaments apart = new Butas(nr,plotas,kambariusk,kaina,tnr); // array of apartaments

                apartaments.addapartament(apart); 

            }
        }
    }

文本文件:

1;25,4;1;25000;867467212 // skips this line...
2;26,4;2;100000;867467212
3;75,4;3;2100;867467212
4;65,4;4;15000;867467212

3 个答案:

答案 0 :(得分:2)

删除对line = reader.ReadLine();的第一个电话您正在呼叫ReadLine()您的循环,因此您不需要它。

答案 1 :(得分:1)

因为你做了一行= reader.ReadLine();然后在while循环中使用相同的代码跟进它,当它到达循环的第一次迭代时,它已经完成了两次.ReadLine(),因此在第二行上文件。

删除line = reader.ReadLine();从代码中重试。

答案 2 :(得分:0)

 private static void read(string file, Konteineris butas)
{
    using (StreamReader reader = new StreamReader(@file))
    {
        string line;
  

line = reader.ReadLine();

        while (null != (line = reader.ReadLine()))
        {
            string[] values = line.Split(';');
            int nr = Convert.ToInt16(values[0]);
            double plotas = Convert.ToDouble(values[1]);
            int kambariusk = Convert.ToInt16(values[2]);
            int kaina = Convert.ToInt32(values[3]);
            string tnr = values[4];
            Apartaments apart = new Apartaments(nr,plotas,kambariusk,kaina,tnr); // array of apartaments

            apartaments.addapartament(apart); 

        }
    }
}

删除它。因为你的while条件已经这样做了,你将根据这个调用跳过第一行。 line = reader.ReadLine();每次调用它时都会给你一个新行。 因此,在您的状态下,您可以在不使用第一行的情况下获得第二行。

WAY1:

  private static void read(string file, Konteineris butas)
{
    using (StreamReader reader = new StreamReader(@file))
    {
        string line;
        while (null != (line = reader.ReadLine()))
        {
            string[] values = line.Split(';');
            int nr = Convert.ToInt16(values[0]);
            double plotas = Convert.ToDouble(values[1]);
            int kambariusk = Convert.ToInt16(values[2]);
            int kaina = Convert.ToInt32(values[3]);
            string tnr = values[4];
            Apartaments apart = new Apartaments(nr,plotas,kambariusk,kaina,tnr); // array of apartaments

            apartaments.addapartament(apart); 

        }
    }
}

way2:

  private static void read(string file, Konteineris butas)
{
    using (StreamReader reader = new StreamReader(@file))
    {
        string line;

        while (line!=null)
        { 
            line = reader.ReadLine();
            string[] values = line.Split(';');
            int nr = Convert.ToInt16(values[0]);
            double plotas = Convert.ToDouble(values[1]);
            int kambariusk = Convert.ToInt16(values[2]);
            int kaina = Convert.ToInt32(values[3]);
            string tnr = values[4];
            Apartaments apart = new Apartaments(nr,plotas,kambariusk,kaina,tnr); // array of apartaments

            apartaments.addapartament(apart); 

        }
    }
}