本代码借鉴他人案例,如有侵权,请联系作者删除!!!!
示例代码如下:
public static void main(String[] args) {
//判断是否读到文本的最后一条数据
String lineLast=CollectionTest.getLastLineData("G:/hdf5_write_txt/a0909.txt","utf-8");
System.out.println("最后一条数据是:"+lineLast);
}
//判断是否读到文件的最后一行数据
public static String getLastLineData(String path,String charset) {
String lastLine=null;
RandomAccessFile raf=null;
try {
raf=new RandomAccessFile(path, "r");
long lastLinePos=getLastLinePos(raf);
long length=raf.length();
// System.out.println("下标为:"+lastLinePos);
byte[] bytes=new byte[(int)((length-1)-lastLinePos)];
raf.read(bytes);
if(charset == null) {
lastLine=new String(bytes);
}else {
lastLine=new String(bytes,charset);
}
} catch (Exception e) {
e.printStackTrace();
}
return lastLine;
}
public static long getLastLinePos(RandomAccessFile raf) {
long lastLinePos = 0;
// 获取文件占用字节数
try {
long len = raf.length();
if (len > 0L){
// 向前走一个字节
long pos = len - 1;
while (pos > 0)
{
pos--;
// 移动指针
raf.seek(pos);
// 判断这个字节是不是回车符
if (raf.readByte() == '\n')
{
lastLinePos = pos;// 记录下位置
// break;// 前移到会第一个回车符后结束
return pos;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return lastLinePos;
}
相关部分知识,更详细可参照该博客地址:
https://blog.youkuaiyun.com/qq_21808961/article/details/83547919