http://www.cnblogs.com/Sunw/p/3801145.html

http://www.cnblogs.com/dukc/p/4776868.html

http://www.cnblogs.com/zhujiabin/p/5660541.html

总结

  1、构造方法:RandomAccessFile有两个构造方法

    (1) RandomAccessFile(File file, String mode)

    (2) RandomAccessFile(String filepath, String mode)

    mode参数表示打开文件方式,其值及含义如下:

含意

"r" 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException
"rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
"rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。
"rwd" 打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。

  2、文件长度属性:同java.io.File对象一样的length

  3、指针定位方法:

    public void seek(long pos) throws IOException {}
    参数pos - 从文件开头以字节为单位测量的偏移量位置,在该位置设置文件指针。

    (1) pos位于 [0, length] 之间,超出范围则报错;

    (2) 一般在读取文件时,不要将pos指向length,因为pos指向length表示文件已读完,这时再调用read方法则会抛出异常,如果是反向读取文件,可以设置pos=length-1,这表示下一次read得到的事最后一个字符;

    (3) 定义了多种read方法,用于读取不同类型的数据,具体请查看API

  4、读取文件时要注意指针位置

    (1) 指针自动移动:每次调用read的时候,指针pos会自动移动到read的数据之后,这就表示,如果需要重复read某一段数据,那么每次read前都要手动调用一次seek(pos)方法;

    (2) 反向读取需注意:在反向读取文件时,我这里使用了 if(logFile.readByte() == '\n') {} 来判断是否读取到了换行符,由于(1)的关系,在执行这个if之后,指针向后移动了一个字节长度,所以在if块中,我们可以直接调用readLine来获取下一行的数据,也正因为如此,我们在这个if块中,只能获取到前面存在换行符'\n'的数据,这就表明了,这里面永远不可能获取到第一行的数据(因为第一行前面没有行了,也就没有换行符'\n'了),所以这里对首行数据进行单独读取。

    (3) 空行处理:line = logFile.readLine(); 如果读取了空行,则这里 line = null; (个人认为这是不对,原因很简单:既然是空行,就表示存在这个行,只是没有数据而已,所以个人认为应该是 "" 而不是 null);所以在这里不要直接使用line,小心报NullPointException哦;

    (4) 字符集问题:readLine()存在中文乱码问题;我没有深入研究过是否能直接read中文,这里只是对read结果做了简单处理,如果你有更好的中文乱码解决方案,也请你能留言告诉我。

读取文件任意位置的内容——RandomAccessFile的更多相关文章

  1. 利用RandomAccessFile类在指定文件指定位置插入内容

    package File; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; ...

  2. shell读取文件的每一行内容并输出【转】

    写法一: #!/bin/bash while read line do echo $line done < file(待读取的文件) 写法二: #!/bin/bash cat file(待读取的 ...

  3. Java分享笔记:RandomAccessFile流 & 在文件指定位置插入内容

    RandomAccessFile流:随机存取文件流,该类定义了一个记录指针,通过移动指针可以访问文件的任意位置,且对文件既可以读也可以写.使用该类的write方法对文件写入时,实际上是一种覆盖效果,即 ...

  4. python工具 - 读取文件的部分指定内容并输出到外置窗口

    一.使用场景 某些配置文件里有一些特定的字符,而这些字符恰巧需要我们采集出来,然后输出到另外一个窗口做展示时,可以使用该工具. 本例的演示则提取配置文件中的[姓名:黄蓉 女 九阴真经.姓名:郭靖 男 ...

  5. (转)shell:读取文件的每一行内容并输出

    写法一:----------------------------------------------------------------------------#!/bin/bashwhile rea ...

  6. 使用js在html文档的任意位置输出内容

    <script type="text/javascript">document.write('这里是内容');</script>

  7. python读取文件行号和内容的便捷方法

    处理数据时候,需要得到数据所在和行号,使用enumerate时便捷的方法: file = open('file.txt','r') for (num,value) in enumerate(file) ...

  8. shell 读取文件的每一行内容并输出

    (1)#!/bin/bash while read linedo    echo $linedone < file (2)#!/bin/bash cat file  | while read l ...

  9. 编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内

    查看本章节 查看作业目录 需求说明: 在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字"[ 来自新华社 ]",保存到一个新的 txt 文件内 实现思路: 创建 Sa ...

随机推荐

  1. 转:cookie.setPath()用法

    原文地址:cookie.setPath()的用法 正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得. 1.可在同一应用服务器内共享方法:设置cookie.setPath ...

  2. 查找->静态查找表->次优查找(静态树表)

    文字描算 之前分析顺序查找和折半查找的算法性能都是在“等概率”的前提下进行的,但是如果有序表中各记录的查找概率不等呢?换句话说,概率不等的情况下,描述查找过程的判定树为何类二叉树,其查找性能最佳? 如 ...

  3. 洛谷P3724 大佬 [AH2017/HNOI2017] dp+bfs

    正解:dp+bfs 解题报告: 传送门! 这题看起来很复杂的样子其实真的很复杂 但是仔细看一下题目,会发现其实操作只有两个目的嘛,一个是保证自己不死,一个是让对手减血 而且保证自己不死只有一种操作 而 ...

  4. 运行vs2010,Debug时发生“无法启动程序"http://localhost:xxx",系统找不到指定文件

    网上参考回答:应该是Visual Studio不能启动浏览器导致的结果!第一种结果是没有设置默认的浏览器,第二种情况是注册表被修改了! 我的尝试: 1.在启动处点击下三角,选择“使用以下浏览器浏览” ...

  5. 五、Docker

    1.简介 Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像: 运行中的这 ...

  6. UIBezierPath使用

    效果图,Demo的例子是我自己做的,下面曲线的代码是从别处copy过来的 copy地址 -(void)touchesBegan:(NSSet<UITouch *> *)touches wi ...

  7. NgDL:第三周:浅层NN

    1.激活函数 1.tanh函数比sigmoid效果更好,它的区间是[-1,1],所以均值为0,有类似于让数据中心化的效果. //此时Ng说,tanh函数几乎在所有场合都更优越. 2.但是如果yhat是 ...

  8. 【LeetCode每天一题】Reverse String

    Write a function that reverses a string. The input string is given as an array of characters char[]. ...

  9. yum 安装报错 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:

    原因: 这是因为yum采用python作为命令解释器,这可以从/usr/bin/yum文件中第一行#!/usr/bin/python发现.而python版本之间兼容性不太好,使得2.X版本与3.0版本 ...

  10. Java Selenium - 元素操作 (四)

    四,弹出框 京东购物车为例 , 点击‘删除’ 或者‘移到我的关注’ ,就会弹出下面这个框框,练吧: (其实这也不是常规的弹出框,二是div css前端技术做的效果,本想做个Alert的案例,实在不好找 ...