java从文件末尾开始向前读文本

	public static List<String> getLine(String fileName, String startTime, int lines)
			throws FileNotFoundException, IOException {
		List<String> list = new ArrayList<String>();
		boolean already = false;
		RandomAccessFile rf = null;
		rf = new RandomAccessFile(fileName, "r");
		long len = rf.length();
		long start = rf.getFilePointer();
		long nextend = start + len - 1;
		String line;
		rf.seek(nextend);
		int c = -1;
		while (nextend > start) {
			c = rf.read();
			if (c == '\n' || c == '\r') {
				line = rf.readLine();
				if(already && lines >0){
					list.add(line);
					lines--;
				}
				if(line.startsWith(startTime)){
					//向前读lines行
					list.add(line);
					lines--;
					already = true;
				}
				nextend--;
			}
			nextend--;
			if(lines == 0)
				break;
			rf.seek(nextend);
			if (nextend == 0) {// 当文件指针退至文件开始处,输出第一行
				line = rf.readLine();
				if(line.startsWith(startTime)&&lines == 1)
					list.add(line);
			}
		}
		rf.close();
		return list;
	}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值