使用BufferedReader读取文本文件

我在使用BufferedReader时遇到问题

我想打印一个文本文件的6行:

public class Reader { public static void main(String[]args) throws IOException{ FileReader in = new FileReader("C:/test.txt"); BufferedReader br = new BufferedReader(in); while (br.readLine() != null) { System.out.println(br.readLine()); } in.close(); } 

现在从每次我调用readLine()方法的时候,它都会自动前进到下一行。

所以我不能使用条件br.readLine()!= null,因为它已经提前一行,我得到的输出:

 Line 2 Line 4 Line 6 

我使用什么条件来检查文本字段中是否还有新行。

提前致谢!

这就是问题:

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

你有两个readLine调用 – 第一个检查是否有一行(但读取它并将其扔掉),第二个读取下一行。 你要:

 String line; while ((line = br.readLine()) != null) { System.out.println(line); } 

现在我们只每个循环迭代中调用一次 readLine() ,并且使用我们已经读过的“我们完成了?”的行。 和“打印行”部分。

你通过while循环读取line while并通过循环读取下一行,所以只需在while循环中读取即可

  String s; while ((s=br.readLine()) != null) { System.out.println(s); } 

您可以将br.readLine()的结果分配给一个variables,并将其用于处理和检查,如下所示:

 String line = br.readLine(); while (line != null) { // You might also want to check for empty? System.out.println(line); line = br.readLine(); } 

也许你的意思是:

 public class Reader { public static void main(String[]args) throws IOException{ FileReader in = new FileReader("C:/test.txt"); BufferedReader br = new BufferedReader(in); String line = br.readLine(); while (line!=null) { System.out.println(line); line = br.readLine(); } in.close(); } 

尝试:

 String text= br.readLine(); while (text != null) { System.out.println(text); text=br.readLine(); } in.close(); 

要么

 public String getFileStream(final String inputFile) { String result = ""; Scanner s = null; try { s = new Scanner(new BufferedReader(new FileReader(inputFile))); while (s.hasNext()) { result = result + s.nextLine(); } } catch (final IOException ex) { ex.printStackTrace(); } finally { if (s != null) { s.close(); } } return result; } 

这也是第一行。

你可以将它存储在数组中,然后使用任何你想要的行。这是我用来从文件中读取行并将其存储在string数组中的代码片段,希望这对你有用:)

 public class user { public static void main(String x[]) throws IOException{ BufferedReader b=new BufferedReader(new FileReader("<path to file>")); String[] user=new String[30]; String line=""; while ((line = b.readLine()) != null) { user[i]=line; System.out.println(user[1]); i++; } } } 
 private void readFile() throws Exception { AsynchronousFileChannel input=AsynchronousFileChannel.open(Paths.get("E:/dicom_server_storage/abc.txt"),StandardOpenOption.READ); ByteBuffer buffer=ByteBuffer.allocate(1024); input.read(buffer,0,null,new CompletionHandler<Integer,Void>(){ @Override public void completed( Integer result, Void attachment){ System.out.println("Done reading the file."); } @Override public void failed( Throwable exc, Void attachment){ System.err.println("An error occured:" + exc.getMessage()); } } ); System.out.println("This thread keeps on running"); Thread.sleep(100); }