Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用bufferedReader读取前一行_Java_File Io_Bufferedreader - Fatal编程技术网

Java 如何使用bufferedReader读取前一行

Java 如何使用bufferedReader读取前一行,java,file-io,bufferedreader,Java,File Io,Bufferedreader,我正在做一个大项目。因为我被困在一个地方。我正在使用以下代码读取文件: String str = null; FileReader fr = new FileReader("H:\\Eclipse\\Emulator\\progin8085.txt"); BufferedReader br = new BufferedReader(fr); str = br.readLine(); //using it in a loop from 0 to total_no_of_lines 现在,当我在第

我正在做一个大项目。因为我被困在一个地方。我正在使用以下代码读取文件:

String str = null;
FileReader fr = new FileReader("H:\\Eclipse\\Emulator\\progin8085.txt");
BufferedReader br = new BufferedReader(fr);
str = br.readLine(); //using it in a loop from 0 to total_no_of_lines

现在,当我在第8行计算行数,同时向文件输入数据时,我想返回到第3行或第4行或任意行,然后再次读取并执行每个语句。如何仅使用BufferedReader读取以前的语句?如果不可能,还有其他解决方案吗?

将文本文件的所有行保存在String[]StrArray中,然后执行任何您想要的操作。

一些读卡器支持标记。你可以用它们来倒带文件。LineNumberReader是一个特别有用的阅读器,它支持标记。这种代码可能适合您的需要

public static int final READ_AHEAD_LIMIT = 100000;

LineNumberReader lnReader = new LineNumberReader(reader);

while (youWantToRead) {
  ...
  if (mightBeInterestingLater) {
    lnReader.mark(READ_AHEAD_LIMIT);
  }
  ...
  if (nowWantToRewind) {
    lnReader.reset();
    // We're now at whatever place mark() was last called at.
  }

这是可能的,但不希望通过标记和重置方法实现。为什么您认为需要重新读取数据?这不寻常。不要只是重复你自己。回答这个问题。@HarisMehmood:让JVM崩溃吧?@HarisMehmood我现在很困惑。你说把它读入记忆。有人说如果太大怎么办?你说没关系。现在你是说如果它太大,显然不是。那么是哪一个呢?@Noname当你提到Haris的陈述时,很难理解你为什么要对Boris讲话。一般来说,您需要更仔细地阅读此处发布的内容。假设文件适合内存。好的……但是bUfferedReader是否可以通过其他方式仅执行所需任务?@Noname EJP刚刚说,您可以通过标记和重置方法来完成此任务。@Noname我在评论中回答了这个问题。包含您忽略的问题的问题。这里有点违反最佳编码实践。BufferedReader支持mark。他不必更换读者。看Javadoc,我不是故意要说它不是。我刚刚指出LineNumberReader很有用,它确实支持标记。