java读取文本,如何读取前n行,在读取中间n行,在读取后n行?

例如

0
1
2
43
4
5

先读取1行和2行,判断最大,然后读取3行和4行判断最大,接着读取5行和6行行判断最大

按行读取方法readLine(),一次读取一行

哪里不对呢?
readLine()是缓冲区BufferedReader提供的一个按行读取的方法,
FileReader fr=new FileReader(filepath);
BufferedReader br=new BufferedReader(fr);
br.readLine();//返回字符串

如果你要比较大小的话需要把读取的字符串转换为整形再比较

用java.io.RandomAccessFile
里面的api比较适合这个需求:

  int readInt() 
          从此文件读取一个有符号的 32 位整数。 
 String readLine() 
          从此文件读取文本的下一行。 
 int skipBytes(int n) 
          尝试跳过输入的 n 个字节以丢弃跳过的字节。 

至于怎么用,看自己的编码技巧了

直接使用 InputStream 的 read (byte[] b,int off,int len) 方法方法就可以。

里面有三个参数
1、b为存放自己数组。
2、off为读取的第一字节的位置,即你想从哪个字节作为读取的开始。
3、len为读取的个数。

int型 是四个字节

空格、换行都是一个字节。

如果只是为了求一个文件里,所有的最大值,我建议用Java8提供的读取文件流的方式,这个流不是以前什么InputStream啥的,就是Stream,Java8的新特性,用起来很方便的

                        Path start = new File("i:/tt.txt").toPath();
            OptionalInt max = Files.lines(start) // 把文件一行行转换为字符串流
                                   .map(line -> line.trim()) // 每一行去空格
                                   .mapToInt(Integer::parseInt) // 把每一行转换为数字
                                   .max(); // 求最大值
            System.out.println(max.get());