使用java从文件中获取特定行

使用java从文件中获取特定行,java,Java,我想从文件中打印一行,例如第四行或第二行。这是我的代码,它只显示所有行和每个行号。如果这是一个简单而愚蠢的问题,我很抱歉,但提前谢谢你:D FileReader fr = null; LineNumberReader lnr = null; String str; int i; try{ // create new reader fr = new FileReader("test.txt");

我想从文件中打印一行,例如第四行或第二行。这是我的代码,它只显示所有行和每个行号。如果这是一个简单而愚蠢的问题,我很抱歉,但提前谢谢你: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();
      }
   }
}
怎么样

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

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

在循环中放入一些计数器,并在while循环中添加其他条件,例如计数器<4。我认为它应该像你想的那样工作

最简单的方法就是记录你正在读哪一行。看起来你想用
i
来做这个。一旦你读了你想要的那一行,别忘了把它从循环中打断

此外,continue语句表示“跳过所有其他内容,转到下一个迭代”

请记住,正如下面提到的注释,LineNumberReader从
0
开始阅读。所以,这将以自然顺序返回第56行。如果希望57按自然顺序排列,可以使用此条件语句。
if(i这个怎么样

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;
      }
}

在您的帮助下,您可以避免显式关闭流,一切都由他们来处理。

在满足所需条件后,不要忘记添加
break;
。我认为变量
I
应该已经保存行号。请注意,行号默认从0开始。这意味着如果您需要正好3行自然顺序,IF语句应该是
IF(i!=2)continue;
谢谢,我添加了一个关于自然顺序的注释。的可能重复项
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;
      }
}