例如
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());