如何从java中的文件中读取单行

时间:2013-12-02 08:16:15

标签: java

如何从java中的文本文件中读取单行。 知道线路完成的标准是什么。

其次

我读取文件然后读取行功能并将其转换为字符串将跳过大量数据?应该是什么问题? 这是我的代码

String data = new String();
    while(infile.readLine() != null) {
    data = infile.readLine();
    System.out.println(data);
}

3 个答案:

答案 0 :(得分:2)

按如下方式更改您的代码

  while((data = infile.readLine()) != null) {  // read and store only line    
  System.out.println(data);
  }

在您当前的代码中

   while(infile.readLine() != null) { // here you are reading one and only line
   data = infile.readLine(); // there is no more line to read
    System.out.println(data);
   }

答案 1 :(得分:1)

您正在阅读额外的一行,因为第一个readLine()作为while条件会读取一行,但它会被使用。 readLine()循环中的第二个while读取您分配给data并打印的第二行。

因此,您需要将while条件下读取的行分配给data并打印出来,因为这是第一行。

while((data = infile.readLine()) != null) { // reads the first line
    // data = infile.readLine(); // Not needed, as it reads the second line
    System.out.println(data); // print the first line
}

此外,由于您只需阅读第一行,因此根本不需要while。一个简单的if就行了。

if((data = infile.readLine()) != null) { // reads the first line
    System.out.println(data); // print the first line
}

使用BufferedReader以及您在评论中发布的代码,您的主文件现在应该是这样的。

public static void main(String[] args) {
    try {
        FileInputStream fstream = new FileInputStream(args[0]);
        BufferedReader infile = new BufferedReader(new InputStreamReader(
                fstream));
        String data = new String();
        while ((data = infile.readLine()) != null) { // use if for reading just 1 line
            System.out.println(data);
        }
    } catch (IOException e) {
        // Error
    }
}

答案 2 :(得分:0)

首先:readLine()仅返回String值,因此它不会转换为String。

第二件事:在你的while循环中,你读取第一行并检查第一行的内容是否为空。但是当data = infile.readLine();执行时,它将从文件中获取第二行并将其打印到控制台。

将您的while循环更改为:

while((data = infile.readLine()) != null){ 
    System.out.println(data); 
}

如果您使用toString()方法,则会在尝试使用toString方法并从null读取infile内容时抛出NPE。