首页 » PHP教程 » phprandomaccessfile技巧_Java IO之RandomAccessFile类构造方法并运用实例说明

phprandomaccessfile技巧_Java IO之RandomAccessFile类构造方法并运用实例说明

访客 2024-11-21 0

扫一扫用手机浏览

文章目录 [+]

RandomAccessFile工具类中有个位置指示器,指向当前读写处的位置,当读写n个字节后,文件指示器将指向这n个字节后的下一个字节处。
刚打开文件时,文件指示器指向文件的开头处,可以移动文件指示器到新的位置,随后的读写将重新的位置开始。

RandomAccessFile类在文件随机(相对付顺序)读取时有很大的上风,但该类仅限于操作文件,不能访问其他得IO设备,如网络、内存映像等。

phprandomaccessfile技巧_Java IO之RandomAccessFile类构造方法并运用实例说明

二、RandomAccessFile布局方法

RandomAccessFile类为用户供应了两种布局方法:

phprandomaccessfile技巧_Java IO之RandomAccessFile类构造方法并运用实例说明
(图片来自网络侵删)

1、RandomAccessFile(File file, String mode)

2、RandomAccessFile(String name, String mode)

实在第二种布局方法也是new一个File出来再调用第一种布局方法,建议利用第一种布局方法,由于第一篇文章就说了File是IO的根本,有一个File不仅仅可以通过RandomAccessFile对文件进行操作,也可以通过File工具对文件进行操作。
至于mode,Java给开拓者供应了四种mode:

把稳第二点\公众rw\公众模式,对rw模式的阐明意味着Java并不强求指定的路径下一定存在某个文件,如果文件不存在,会自动创建。

三、RandomAccessFile中的方法

RandomAccessFile中有如下一些常用方法:

四、RandomAccessFile利用实例

先定义一个实体类:

package com.demo.entity;public class Employee { private String name; private int age; private final static int LEN = 8; public Employee() { } public Employee(String name, int age) { if (name.length() > LEN) { name = name.substring(0, 8); } else { while (name.length() < LEN) { name = name + \"大众\u0000\"大众; } } this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}

第一部分,写文件,该文件在路径下并没有,以是Java会自动帮我们创建:

/ 写文件 /@Testpublic void writeFile() throws IOException{ Employee e1 = new Employee(\"大众zhangsan\公众, 23); Employee e2 = new Employee(\公众lisi\公众, 24); Employee e3 = new Employee(\公众wangwu\公众, 25); RandomAccessFile raf0 = new RandomAccessFile(\"大众D:/Files/employee.txt\"大众, \"大众rw\公众); raf0.writeBytes(e1.getName()); raf0.writeInt(e1.getAge()); raf0.writeBytes(e2.getName()); raf0.writeInt(e2.getAge()); raf0.writeBytes(e3.getName()); raf0.writeInt(e3.getAge()); raf0.close();}

文件创建好了,D盘下的Files文件夹也有该文件了,以是读取一下,这里利用了一些小技巧来演示seek方法和skipBytes方法:

/ 读文件 /@Testpublic void ReadFile() throws IOException{ RandomAccessFile raf1 = new RandomAccessFile(\"大众D:/Files/employee.txt\公众, \"大众r\"大众); int len = 8; raf1.skipBytes(12); // 跳过第一个员工的信息,其姓名8字节,年事4字节 System.out.println(\"大众第二个员工的信息:\公众); String str = \"大众\公众; for (int i = 0; i < len; i++) { str = str + (char)raf1.readByte(); } System.out.println(\公众name:\"大众 + str); System.out.println(\公众age:\"大众 + raf1.readInt()); System.out.println(\"大众第一个员工的信息:\公众); raf1.seek(0); str = \公众\"大众; for (int i = 0; i < len; i++) { str = str + (char)raf1.readByte(); } System.out.println(\公众name:\"大众 + str); System.out.println(\"大众age:\"大众 + raf1.readInt()); System.out.println(\"大众第三个员工的信息:\"大众); raf1.skipBytes(12); // 跳过第二个员工的信息 str = \"大众\公众; for (int i = 0; i < len; i++) { str = str + (char)raf1.readByte(); } System.out.println(\公众name:\"大众 + str.trim()); System.out.println(\"大众age:\"大众 + raf1.readInt()); raf1.close();}

看一下运行结果:

第二个员工的信息:name:lisiage:24第一个员工的信息:name:zhangsanage:23第三个员工的信息:name:wangwuage:25

可能有人奇怪,\公众zhangsan\"大众加上一个int跳过12个字节可以理解,但是\"大众lisi\"大众、\"大众wangwu\"大众为什么加上int要跳过12个字节呢?明明\"大众lisi\"大众只有4个字节,\公众wangwu\公众只有6个字节啊。
这个就涉及到一个\"大众字节对齐\"大众的问题了,有兴趣的可以理解一下。
其余,再说一下,RandomAccessFile利用完一定要及时close()。

标签:

相关文章

临武区,绿色发展的璀璨明珠

临武区,位于我国湖南省郴州市,是一个有着丰富自然资源和悠久历史的地方。近年来,临武区以绿色发展为引领,实现了经济社会与生态环境的协...

PHP教程 2024-12-23 阅读0 评论0

中止代码8,介绍网络安全的“无形守护者”

随着互联网的普及,网络安全问题日益凸显。无数黑客、病毒、恶意软件企图入侵我们的电脑,窃取个人信息,破坏网络秩序。在这场没有硝烟的战...

PHP教程 2024-12-23 阅读0 评论0

中美协议漏洞,漏洞背后的风险与应对步骤

近年来,中美关系在全球范围内备受关注。为了维护两国间的稳定与互利共赢,中美两国政府签署了一系列协议。这些协议中存在一些漏洞,给双方...

PHP教程 2024-12-23 阅读0 评论0

中华烟,传承与创新并进的民族品牌

中华烟,作为中国烟草行业的领军品牌,历经百年风雨,承载着中华民族的文化底蕴和民族精神。自诞生之日起,中华烟便以其独特的品牌魅力,赢...

PHP教程 2024-12-23 阅读0 评论0

东方餐,探寻中华美食的独特魅力

自古以来,中国饮食文化源远流长,被誉为“舌尖上的中国”。在这片广袤的土地上,各地美食争奇斗艳,其中东方餐作为中华美食的重要组成部分...

PHP教程 2024-12-23 阅读0 评论0