java 中读取文件最后一行信息

来源:互联网 发布:京东怎么做淘宝客 编辑:程序博客网 时间:2024/05/18 01:44
 RandomAccessFile read = null;

        try{
            read = new RandomAccessFile(file,"r");
            long start = read.getFilePointer();
            long currect = start + r.length()-1;
            String result = "";
            read.seek(currect);
            int d=-1;
            while(currect>=start){
                d = read.read() = read.readByte();  //如果换成 char d = read.readchar(),就会发生很有趣的事情
                                                   // 在seek()偶数字节时,读就对,奇数时就错了.
                if(d=='\n'||d=='\r'){
                    read.seek(currect+1);
                    result = read.readLine();
                    // do more handle about the result here
                    // ...
                }
                currect--;
            }
        }finally{
            if(read!=null)
                read.close();
        }

原因是:
java中一个字符(char)是2个字节 raf.seek(Integer.parseInt(s));这个方法的参数是指定偏移的字节数seek方法参数       readChar方法读取位置            readChar读取内容  0                  文件开始                        第一个字符1                  第一个字节之后开始              第一个字符的第二个字节                                                   第二个字符第一个字节2                  第二个字节之后开始              第二个字符 所以,很容易理解为什么参数是奇数,无法读取,因为读取的根本不是一个字符的2个字节,而是分别读取了2个字符的半个字节其实如果你写入的是long类型,可能你输入1,2,3,4,5,6,7 都会错,原因一样的

阅读(36) | 评论(0) | 转发(0) |
0

上一篇:eclipse 快捷键

下一篇:c 语言的一些知识

相关热门文章
  • JDK1.6官方下载_JDK6官方下载_...
  • MyEclipse6.5下载及注册码...
  • Eclipse+MyEclipse的配置
  • Eclipse 插件安装、升级和卸载...
  • 最新版SWT Designer 6.0 安装,...
  • 那一台服务器也没5T的存储空间...
  • 公司有5T的数据用于下载,数据...
  • CACTI监控ESXI中的虚拟机,监...
  • 如何挂载一块以前做过LVM的硬...
  • 做主主同步,只同步个别的几张...
给主人留下些什么吧!~~
原创粉丝点击