首页 / MAC / RandomAccessFile
RandomAccessFile
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了RandomAccessFile,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2770字,纯文字阅读大概需要4分钟。
内容图文
![RandomAccessFile](/upload/InfoBanner/zyjiaocheng/477/98b07c1e2fd842089395cf4b8bcc97b4.jpg)
RandomAccessFile 类支持“随机访问”的方式,程序可以直接跳到文件的任意地方来读、写文件(其实我更愿意叫它“随意访问”)----支持只访问文件的部分内容----可以向已存在的文件后追加内容
RandomAccessFile 对象包含一个记录指针,用以标示当前读写处的位置。RandomAccessFile 类对象可以自由移动记录指针:long getFilePointer():获取文件记录指针的当前位置void seek(long pos):将文件记录指针定位到 pos位置
创建 RandomAccessFile 类实例需要指定一个 mode参数,该参数指定 RandomAccessFile 的访问模式:r:以只读方式打开rw:打开以便读取和写入rwd:打开以便读取和写入,同步文件内容的更新rws:打开以便读取和写入,同步文件内容和元数据的更新
JDK 1.4后很多 RandomAccessFile 的功能被转到“内存映射文件”里了,可以考虑使用 memory-mapped files
下面举例说明(注意:直接在指针后 write 将会是覆盖操作,这里只演示插入操作)
// 文本文件的复制(实现读写)
@Test
public void test1() {
RandomAccessFile rafin = null;
RandomAccessFile rafout = null;
try {
rafin = new RandomAccessFile("C:/Users/59929/Desktop/test1.txt", "r");
rafout = new RandomAccessFile("C:/Users/59929/Documents/test.txt", "rw");
int len;
byte[] b = new byte[1024];
while ((len = rafin.read(b)) != -1) {
rafout.write(b, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (rafout != null) {
try {
rafout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (rafin != null) {
try {
rafin.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
// 实现文本文件的插入操作
@Test
public void test2() {
RandomAccessFile raf = null;
try {
raf = new RandomAccessFile("C:/Users/59929/Desktop/test2.txt", "rw");
System.out.println("现在指针位置为:" + raf.getFilePointer());
raf.seek(16);
System.out.println("移到要修改的位置,现在指针位置为:" + raf.getFilePointer());
int len;
byte[] b = new byte[10];
StringBuffer sb = new StringBuffer();
while ((len = raf.read(b)) != -1) {
sb.append(new String(b, 0, len));
}
System.out.println("读完后现在指针位置为:" + raf.getFilePointer());
raf.seek(16);
System.out.println("再次移到要修改的位置,现在指针位置为:" + raf.getFilePointer());
raf.write("c".getBytes());
raf.write(sb.toString().getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (raf != null) {
try {
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
RandomAccessFile
标签:[] 覆盖 地方 sys 同步 ack top 映射文件 演示
本文系统来源:http://www.cnblogs.com/chendifan/p/6537811.html
内容总结
以上是互联网集市为您收集整理的RandomAccessFile全部内容,希望文章能够帮你解决RandomAccessFile所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。