读取文件任意位置的内容——RandomAccessFile
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的更多相关文章
- 利用RandomAccessFile类在指定文件指定位置插入内容
package File; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; ...
- shell读取文件的每一行内容并输出【转】
写法一: #!/bin/bash while read line do echo $line done < file(待读取的文件) 写法二: #!/bin/bash cat file(待读取的 ...
- Java分享笔记:RandomAccessFile流 & 在文件指定位置插入内容
RandomAccessFile流:随机存取文件流,该类定义了一个记录指针,通过移动指针可以访问文件的任意位置,且对文件既可以读也可以写.使用该类的write方法对文件写入时,实际上是一种覆盖效果,即 ...
- python工具 - 读取文件的部分指定内容并输出到外置窗口
一.使用场景 某些配置文件里有一些特定的字符,而这些字符恰巧需要我们采集出来,然后输出到另外一个窗口做展示时,可以使用该工具. 本例的演示则提取配置文件中的[姓名:黄蓉 女 九阴真经.姓名:郭靖 男 ...
- (转)shell:读取文件的每一行内容并输出
写法一:----------------------------------------------------------------------------#!/bin/bashwhile rea ...
- 使用js在html文档的任意位置输出内容
<script type="text/javascript">document.write('这里是内容');</script>
- python读取文件行号和内容的便捷方法
处理数据时候,需要得到数据所在和行号,使用enumerate时便捷的方法: file = open('file.txt','r') for (num,value) in enumerate(file) ...
- shell 读取文件的每一行内容并输出
(1)#!/bin/bash while read linedo echo $linedone < file (2)#!/bin/bash cat file | while read l ...
- 编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内
查看本章节 查看作业目录 需求说明: 在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字"[ 来自新华社 ]",保存到一个新的 txt 文件内 实现思路: 创建 Sa ...
随机推荐
- AIX动态增加SWAP空间
增加SWAP交换页空间 查看SWAP,使用lsps –a命令查看,默认安装SWAP是512M,例如: # lsps -a Page Space Physical V ...
- elasticsearch更新doc文档
在elasticsearch-head中: http://localhost:9200/my_index/products/2/ _update { "script" : { &q ...
- 【Python全栈-后端开发】Django入门基础
Django基础知识 一. 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的 ...
- python下载youtube视频
谷歌开源了一个新的数据集,BoundingBox,(网址在这里)这个数据集是经过人工标注的视频数据集,自然想将它尽快地运用在实际之中,那么首先需要将其下载下来:可以看到网址上给出的是csv文件,该文件 ...
- 教你使用SQL数据库复制系列(1-7)
SQL Server 复制系列(文章索引) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 前言(Introduction) 复制逻辑结构图(Construction) ...
- 帝国cms搜索关键字调用标签(showsearch)怎么用
前面ytkah介绍了如何让帝国CMS7.2搜索模板支持动态标签调用,现在我们来说说怎么调用帝国cms搜索关键字调用标签(showsearch).在帝国cms后台那边的使用方法:[showsearch] ...
- sap 对dynamic query parameters 设置条件。
- git add 所有文件
git add 多个文件的格式介绍 git提交修改之前要add然后commit,假如我用git clone远程服务器文件到本地,然后我如果修改了其中几个文件要提交,我必须一个个的如: $git add ...
- 解放你生产力的10款效率工具,赶紧mark起来
聪明的人总是善用工具 社会的快度发展赋予我们的一个幸运之处在于:你可以通过读书或使用工具去改善自身的处境甚至是阶层. 在父母那个时代,通过熟练使用办公软件,可以使一个在水泥地做帮工的青年走进格子间.而 ...
- Dotfuscator 使用图解教程
Dotfuscator:是.NET混淆器和压缩器,它可以帮助您防止您的应用程序被反编译.同时,它还可以使得您的应用程序更加小巧以及高效.我用的是4.9版本的Dotfuscator,Dotfuscato ...