写了一个读文件最后一行的算法,主要思想是利用RandomAccessFile 这个类一开始先将文件的游标移动到文件最后一个字符,然后逐渐向文件头推进,一旦找到'/r'或者‘/n’的时候就将当前的游标记录下来,这个游标的位置就是文件最后一行的起始位置。
?
?这个方法的优点是在处理大文件的时候,效率会高一些。
?
import java.io.RandomAccessFile; /** * @author 百岁(baisui@taobao.com) * @date 2012-2-15 */ public class RandomAccessFileTest { /** * @param args */ public static void main(String[] args) throws Exception { RandomAccessFile randomAccess = new RandomAccessFile( "D:\\tmp\\test.txt", "r"); boolean eol = false; int c = -1; long fileLength = randomAccess.length(); long size = 1; ww: while (!eol) { long offset = fileLength - (size++); randomAccess.seek(offset); switch (c = randomAccess.read()) { case -1: case '\n': case '\r': randomAccess.seek(offset + 1); break ww; } } String line = null; while ((line = randomAccess.readLine()) != null) { System.out.println(line); } randomAccess.close(); } }?