`
lupingui
  • 浏览: 157338 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java倒序读取文件信息

阅读更多
public class ReverseReaderFile {

	private RandomAccessFile randomAccessFile = null;
	private long length = 0;
	private long index = 0;
	
	private ReverseReaderFile(File file) throws IOException{
		this.randomAccessFile = new RandomAccessFile(file, "r");
		this.length = this.randomAccessFile.length();
		this.index = this.length - 1;		
	}
		
	public static ReverseReaderFile newInstance(String path) throws IOException{
		return ReverseReaderFile.newInstance(new File(path));
	}
	public static ReverseReaderFile newInstance(File file) throws IOException{
		if (file == null || !file.exists() || !file.isFile()){
			return null;
		}
		
		return new ReverseReaderFile(file);
	}
	
	/**
	 * 获得文件长度
	 * @auther lupingui
	 * 2010-1-5 下午05:09:00
	 * @return
	 */
	public long getLength(){
		return this.length;
	}
	
	/**
	 * 判断是否可继续往下读取
	 * @auther lupingui
	 * 2010-1-5 下午05:09:08
	 * @return
	 */
	public boolean next(){
		return this.index >= 0;
	}
	
	/**
	 * 读取单行信息(去掉了回车换行)
	 * @auther lupingui
	 * 2010-1-5 下午05:09:34
	 * @return
	 * @throws IOException
	 */
	public String readLine() throws IOException{
		StringBuffer line = new StringBuffer();
		char c;
		while(this.index >= 0){
			this.randomAccessFile.seek(this.index);
			c = (char)this.randomAccessFile.read();
			this.index--;			
			if (c == '\n' || c == '\r'){
				if (line.length() < 1){
					continue;
				}
				break;
			}
			
			line.append(c);
		}
				
		return line == null ? null : line.reverse().toString();
	}
	
	/**
	 * 关闭输出流
	 * @auther lupingui
	 * 2010-1-5 下午05:15:19
	 * @throws IOException
	 */
	public void close() throws IOException{
		this.randomAccessFile.close();
	}
}

 

目前不能支持中文。

分享到:
评论

相关推荐

    java实现倒序读取文件功能示例分享

    主要介绍了java实现倒序读取文件功能示例,需要的朋友可以参考下

    JAVA设计文本文件读取倒序排序

    用netbeans开发的JAVA设计文本文件读取倒序排序程序,也可以保存。主要用JFileChooser控件读取和保存

    Java RandomAccessFile用法

     RandomAccessFile是用来访问那些保存数据记录的文件的,你可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类于操作文件。  RandomAccessFile不属于...

    山东大学java实验指导书大一

    1)从控制台读取一个三位整数2)将其倒序输出(例如,输入123,则输出结果为321) 实验一 Eclipse及Java入门 6 实验内容 6 实验步骤 7 1 利用Eclipse开发环境写自己的第一个Java程序(HelloWorld) 7 2 SavitchIn....

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例245 读取XML文件属性 310 第3篇 窗体与控件应用 第11章 窗体设计 314 11.1 设置窗体位置 315 实例246 控制窗体加载时的位置 315 实例247 设置窗体在屏幕中的位置 315 实例248 从上次关闭位置启动窗体 316 实例...

    最新JAVA编程题全集_50题及答案

    写一个函数,给你一个字符串 倒序输出来 public String getString(String str){ if(str!=null){ String newStr = ""; for(int i=0;i();i++) { char c = str.charAt(str.length()-1-i); newStr = ...

    安卓期末大作业(AndroidStudio开发),日记本app,可以登录和搜索,代码注释详细,能正常运行

    日记还可以同时记录所处位置和当时的天气情况(当然,现在并不支持自动读取),可以为日记归类标签。其中只有日记文本是必填项,其他都是选填。主界面以时间倒序展示日记,可以无限下滑加载更多日记。你也可以搜索指定...

    freemarker总结

    JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: &lt;#if condition&gt;... &lt;#elseif condition&gt;... &lt;#elseif condition&gt;......

Global site tag (gtag.js) - Google Analytics