使用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); }