最近也是碰到了这么一个需求,写了一个工具类,大家可以参考一下,这里我是写在了main方法里进行了测试
package util;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class ReverseRead {
public static void main(String[] args) {
String fileName = "";
RandomAccessFile r = null;
try {
r = new RandomAccessFile(fileName, "r");
long start = r.getFilePointer();
long nextend = start + r.length() - 1;
//System.out.println(nextend);
String result;
r.seek(nextend);
int c = -1;
while (nextend >= start) {
c = r.read();
//System.out.println(c);
if (c == '\n' || c == '\r') {
result = r.readLine();
System.out.println(result);//打印在控制台
//TODO 此处可以自行对result进行操作
nextend--;
}
nextend--;
if(nextend>=0) {
r.seek(nextend);
if (nextend == 0) {// 当文件指针退至文件开始处,输出第一行
System.out.println(r.readLine());
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (r != null)
try {
r.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
参考:https://bbs.youkuaiyun.com/topics/190181198