使用java文件的特定行

时间:2014-10-14 07:16:21

标签: java

我想从文件中打印特定行,例如第四行或第二行。这是我的代码,它只显示所有行和每行号。如果这是一个简单而愚蠢的问题,我很抱歉,但提前谢谢你:D。

FileReader fr = null;
      LineNumberReader lnr = null;
      String str;
      int i;

      try{
         // create new reader
         fr = new FileReader("test.txt");
         lnr = new LineNumberReader(fr);

         // read lines till the end of the stream
         while((str=lnr.readLine())!=null)
         {

            i=lnr.getLineNumber();
            System.out.print("("+i+")");

            // prints string
            System.out.println(str);
             }

      }catch(Exception e){

         // if any error occurs
         e.printStackTrace();
      }finally{

         // closes the stream and releases system resources
         if(fr!=null)
            fr.close();
         if(lnr!=null)
            lnr.close();
      }
   }
}

4 个答案:

答案 0 :(得分:2)

最简单的方法是简单地跟踪您正在阅读的行。您似乎想要使用i。一旦您阅读完所需的行,就不要忘记break

此外,continue语句说"跳过其他所有内容并转到下一次迭代"。

请参阅The while and do-while Statements

     while((str=lnr.readLine())!=null)
     {
        i=lnr.getLineNumber();
        if(i != 57) continue;
        System.out.print("("+i+")");

        // prints string
        System.out.println(str);
        break;
     }

请注意,正如下面提到的评论,LineNumberReader开始在0阅读。因此,这实际上将以自然顺序返回第56行。如果您想要57自然顺序,则可以使用此条件语句。 if(i <= 57) continue;

答案 1 :(得分:1)

怎么样

if(i == 2){
    System.out.println(str);
    break;
}

而不是2,您可以将数字作为命令行参数或用户输入。

答案 2 :(得分:0)

将一些计数器置于循环内并向while循环添加附加条件,例如counter&lt;我认为应该按照你的意愿行事。

答案 3 :(得分:0)

这个怎么样。

public static void main(String[] args) 
{
    int lineNo = 2;     // Sample line number
    System.out.println("content present in the given line no "+lineNo+" --> "+getLineContents(lineNo));
}

public static String getContents(int line_no) {

     String line = null;

      try(LineNumberReader  lineNumberReader = new LineNumberReader(new FileReader("path\\to\\file")))
      {
        while ((line = lineNumberReader.readLine()) != null) {
            if (lineNumberReader.getLineNumber() == line_no)  {  
                break;
            }
        }                       
      }
      catch(Exception exception){
          System.out.println("Exception :: "+exception.getMessage());
      }
      finally{
          return line;
      }
}

try-with-resources statement的帮助下,您可以避免明确关闭流,一切都由他们照顾。