Java: RandomAccessFile
RandeomAccessFile虽然是java.io中的成员,但该类只继承了Object类,实现了DataOut, DataIn, Closeable等接口.此类的实例支持对文件的随机访问和读取.随机访问文件的行为类似存储在文件系统中的一个大型byte数组.存在指向该隐含数组的光标或者索引,称为文件指针. 输入操作从文件指针开始读取字节,并随着对字节的读取而前移文件指针.如果随机访问文件以读取/写入的模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而迁移此文件指针.写入隐含数组的当前末尾之后的输出操作导致该数组扩展.该文件指针可以通过getFilePointer方法读取,并通过seek方法设置.
通过该类的构造函数可以看出,该类只能操作文件,而且操作文件还有模式. r rw rwd rws
如果模式为只读r,不会创建文件,会去读取一个以存在的文件,如果该文件不存在则会出现异常;
如果模式为rw,该对象的构造函数要操作的文件不存在,则自动创建,如果存在,则不会覆盖.
seek方法可以设置文件指针的位置;
skipBytes方法可以跳过指定字节的位置,但该方法只能往前跳,不能往后跳.所以使用没有seek方便.
package Day20;
import java.io.*; public class RandomAccessFileDemo { public static void main(String[] args)throws IOException {
//writeFile();
readFile(); } public static void writeFile()throws IOException{
//File file = new File("a.bat");
RandomAccessFile raf = new RandomAccessFile("a.txt","rw"); raf.write("张三".getBytes());
raf.writeInt(97);
raf.write("李四".getBytes());
raf.writeInt(98);
raf.write("王五".getBytes());
raf.writeInt(99); raf.close();
} public static void readFile()throws IOException{
RandomAccessFile raf = new RandomAccessFile("a.txt","r");
for(int x=0;x<3;x++)
{
raf.seek(x*8);
byte[] buf = new byte[4];
raf.read(buf);
String name = new String(buf);
int age = raf.readInt();
System.out.println(name+":"+age);
}
// byte[] buf = new byte[4];
// raf.read(buf);
//
// String name = new String(buf);//取前四个字节"张三"
// int age = raf.readInt();//取"张三"后面的97
// System.out.println(name+":"+age);
raf.close();
} }
Java: RandomAccessFile的更多相关文章
- Java RandomAccessFile与MappedByteBuffer
Java RandomAccessFile与MappedByteBuffer https://www.cnblogs.com/guazi/p/6838915.html
- Java RandomAccessFile用法
RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须 ...
- Java RandomAccessFile的使用(转载的文章,出处http://www.2cto.com/kf/201208/149816.html)
Java的RandomAccessFile提供对文件的读写功能,与普通的输入输出流不一样的是RamdomAccessFile可以任意的访问文件的任何地方.这就是“Random”的意义所在. Rando ...
- Java RandomAccessFile用法 【转】
RandomAccessFile源地址:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile是用来访问那些保存数据 ...
- (转) Java RandomAccessFile与MappedByteBuffer
RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须 ...
- java RandomAccessFile类(随机访问文件)
该类可以实现对同一个文件的读写操作,与其他IO流不同的是可以指定读写指针的脚标(seek),有跳过指定个数字节(skipBytes)操作. 另外该类也可用于断点续传. 简单示例如下: import j ...
- Java RandomAccessFile类
RandomAccessFile类是Java中操作文件内容功能最强大的类,既可以读,也可以写. RandomAccessFile支持随机访问,可以直接访问文件的任意位置,在文件的任意位置读写数据.如果 ...
- Java RandomAccessFile用法(转载)
RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须 ...
- java:RandomAccessFile随机读取文件内容
RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须是可知的.但是该类仅限于操作文件. ...
随机推荐
- zigbee学习之路(十二):zigbee协议原理介绍
一.前言 从今天开始,我们要正式开始进行zigbee相关的通信实验了,我所使用的协议栈是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以从TI的官网上直接下载T ...
- xcode8+iOS10问题
.xcode升级到8.0后打印的问题 ()xcode8会打印一些莫名其妙的log 解决方法:Scheme里面添加OS_ACTIVITY_MODE = disable ()xcode8打印log不完整 ...
- [转]Part2: Understanding !PTE, Part2: Flags and Large Pages
http://blogs.msdn.com/b/ntdebugging/archive/2010/04/14/understanding-pte-part2-flags-and-large-pages ...
- Git使用指南(1)——Git配置命令
配置用户信息 git config --global user.name bongxin git config --global user.email bongxin@yeah.net 配置文本编辑器 ...
- 通知Notification
步骤: 1.调用getSystemService()获取NotificationManager:NotificationManager manager = (NotificationManager)g ...
- Hibernate 继承映射
@Entity@Inheritance(strategy=InheritanceType.SINGLE_TABLE)@DiscriminatorColumn()public class Animal ...
- 为listview的item添加动画效果
//动画集合 AnimationSet animationSet = new AnimationSet(true); //alpha动画 Animation animation = new Alpha ...
- Arduino 极速入门系列–1 点亮 LED
本篇内容为,使用 Arduino 点亮 LED 的做法示范.很简单的一个入门示范.我们让 LED 闪. 本篇使用到的工具和材料 Arduino Mini Pro 1 PCS Mini USB 数据线 ...
- linux服务器下安装nodejs
http://www.cnblogs.com/kevinchou/p/5405540.html
- 如何为CriteriaOperator过滤对象转换为lambda表达式,即:linq to xpo的动态where语句
How to convert the CriteriaOperator to a lambda expression, so, the latter expression can be used in ...