Java---31---RadnomAccessFile
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java---31---RadnomAccessFile,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3319字,纯文字阅读大概需要5分钟。
内容图文
文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。 通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出 EOFException(是一种 IOException)。如果由于某些原因无法读取任何字节,而不是在读取所需数量的字节之前已到达文件末尾,则抛出 IOException,而不是 EOFException。需要特别指出的是,如果流已被关闭,则可能抛出 IOException。
构造方法摘要 |
|
RandomAccessFile(File file, String mode) |
|
RandomAccessFile(String name, String mode) |
|
Mode:操作模式
"r" 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException。
"rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
"rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。
"rwd" 打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。
如果模式为r(只读),不会创建文件,如果文件不存在会出现异常
如果模式为rw,文件不存在会自动创建,如果存在则不会覆盖
RandomAccessFile支持从任意位置读写文件,这种特性非常符合多线程下载的原理。
假设一个文件大小为20,那么开4个线程,每个线程下载5
0--5
6--10
11-15
16--20
创建RandomAccessFile对象:
RandomAccessFile raf = new RandomAccessFile("data.txt", "rw");
读写方法:
raf.write("张三".getBytes()); raf.writeInt(97); byte buff[] = new byte[4]; raf.read(buff);
调整对象中指针
raf.seek(8);
跳过指定的字节数
raf.skipBytes(8);
举个栗子:
public class RandomAccessFileDemo { public static void main(String[] args) throws Exception { writeFile();// // readFile(); // writeFile2();// 从指定位置开始写文件 writeFile3();// 从原文件中间开始写文件,会覆盖当前指针之后的同等长度内容 } private static void writeFile3() throws Exception { RandomAccessFile raf = new RandomAccessFile("data.txt", "rw"); // seek 和 skipBytes 两个方法都会覆盖之后的内容 // raf.seek(8); raf.skipBytes(8); raf.write("老李".getBytes()); raf.write(102); raf.close(); } public static void writeFile2() throws Exception { RandomAccessFile raf = new RandomAccessFile("data.txt", "rw"); // 从24个字节之后开始写 raf.seek(8 * 3); raf.write("周期".getBytes()); raf.write(103); } public static void readFile() throws Exception { RandomAccessFile raf = new RandomAccessFile("data.txt", "r"); // raf.write("hahaha".getBytes()); // 调整对象中指针 // raf.seek(8); // 从第8个字节开始读文件,读出来的是李斯 // 跳过指定的字节数 // raf.skipBytes(8); byte buff[] = new byte[4]; raf.read(buff); String s = new String(buff); System.out.println("name = " + s); int age = raf.readInt(); System.out.println("age = " + age); raf.close(); } public static void writeFile() throws Exception { RandomAccessFile raf = new RandomAccessFile("data.txt", "rw"); raf.write("张三".getBytes()); raf.writeInt(97); raf.write("李斯".getBytes()); raf.writeInt(99); raf.close(); } }
Java---31---RadnomAccessFile
标签:java randomaccessfile
本文系统来源:http://blog.csdn.net/u013476556/article/details/46351451
内容总结
以上是互联网集市为您收集整理的Java---31---RadnomAccessFile全部内容,希望文章能够帮你解决Java---31---RadnomAccessFile所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。