对RandomAccessFile类的应用
来源:互联网 发布:数值的整数次方 java 编辑:程序博客网 时间:2024/06/03 13:26
实现代码如下:
Employee.java代码:
public class Employee { public String name = null; public int age = 0; public static final int LEN = 8; public Employee(String name, int age) { if (name.length() > LEN) { name = name.substring(0, 8); } else { while (name.length() < LEN) { name += "\u0000"; } } this.name = name; this.age = age; }}
RandomFileTest.java文件代码:
import java.io.*;public class RandomFileTest { public static void main(String[] args) { // TODO Auto-generated method stub Employee e1 = new Employee("zhangsan", 283); Employee e2 = new Employee("lisi", 24); Employee e3 = new Employee("wangwu", 25); try { RandomAccessFile ra = new RandomAccessFile("Employee.txt", "rw"); ra.write(e1.name.getBytes()); ra.writeInt(e1.age); // 调用writeInt方法可以写4个字节的整数,如果用write就只能写一个字节,那么age的最大值为256 ra.write(e2.name.getBytes()); ra.writeInt(e2.age); ra.write(e3.name.getBytes()); ra.writeInt(e3.age); ra.close(); int len = 0; byte[] buf = new byte[Employee.LEN]; String strname = null; RandomAccessFile raf = new RandomAccessFile("Employee.txt", "rw"); raf.skipBytes(Employee.LEN + 4); // 读取第二个记录 len = raf.read(buf); strname = new String(buf, 0, len); System.out.println(strname.trim() + ":" + raf.readInt()); // trim可去掉字符串后面的空格 raf.seek(0); // 读取第二个记录,seek函数为绝对定位 len = raf.read(buf); strname = new String(buf, 0, len); System.out.println(strname.trim() + ":" + raf.readInt()); // 用readInt读int的,用read就是读一个字节 raf.skipBytes(Employee.LEN + 4); len = raf.read(buf); strname = new String(buf, 0, len); System.out.println(strname.trim() + ":" + raf.readInt()); raf.close(); } catch (Exception e) { e.printStackTrace(); } }}
运行结果:
要想显示中文,代码就要修改,因为getBytes函数使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中,所以中文有两个字节,英文只有一个字节。要它的写入与平台无关就要使用writeChars函数,修改代码如下:
RandomFileTest.java文件里修改:
import java.io.*;public class RandomFileTest { public static void main(String[] args) { Employee e1 = new Employee("张三", 283); Employee e2 = new Employee("lisi", 24); Employee e3 = new Employee("wangwu", 25); try { RandomAccessFile ra = new RandomAccessFile("Employee.txt", "rw"); ra.writeChars(e1.name); ra.writeInt(e1.age); // 调用writeInt方法可以写4个字节的整数,如果用write就只能写一个字节,那么age的最大值为256 ra.writeChars(e2.name); ra.writeInt(e2.age); ra.writeChars(e3.name); ra.writeInt(e3.age); ra.close(); String strname = ""; RandomAccessFile raf = new RandomAccessFile("Employee.txt", "r"); raf.skipBytes(Employee.LEN * 2 + 4); // 读取第二个记录 for (int i = 0; i < Employee.LEN; i++) { strname += raf.readChar(); } System.out.println(strname.trim() + ":" + raf.readInt()); // trim可去掉字符串后面的空格 raf.seek(0); // 读取第二个记录,seek函数为绝对定位 strname = ""; for (int i = 0; i < Employee.LEN; i++) { strname += raf.readChar(); } System.out.println(strname.trim() + ":" + raf.readInt()); // 用readInt读int的,用read就是读一个字节 raf.skipBytes(Employee.LEN * 2 + 4); strname = ""; for (int i = 0; i < Employee.LEN; i++) { strname += raf.readChar(); } System.out.println(strname.trim() + ":" + raf.readInt()); raf.close(); } catch (Exception e) { e.printStackTrace(); } }}
运行结果:
1 0
- 对RandomAccessFile类的应用
- RandomAccessFile类的应用
- 对RandomAccessFile的理解
- RandomAccessFile的应用
- RandomAccessFile 对文件的读写
- RandomAccessFile应用
- RandomAccessFile应用
- RandomAccessFile类的学习
- RandomAccessFile类的使用
- java的RandomAccessFile类
- java的RandomAccessFile类
- RandomAccessFile类的使用说明
- 获取RandomAccessFile对文件的读写权限
- 随机读取文件--RandomAccessFile的应用实例
- Java对文件的读、写随机访问,RandomAccessFile类的使用分析
- Java对文件的读、写随机访问,RandomAccessFile类的使用分析
- Java对文件的读、写随机访问,RandomAccessFile类的使用分析
- linux下的RandomAccessFile类
- linux系统下mysql跳过密码验证登录
- Tomcat内存溢出的几点方案
- ${pageContext.request.contextPath} JSP路径问题
- Android中解决scrollview中嵌套listview的listview只显示一行的问题
- leetcode04-Median of Two Sorted Arrays-python
- 对RandomAccessFile类的应用
- 数据库索引
- 利用JSPatch为controller添加View
- Html5+CSS3+EL表达式问题集锦
- Glide之GlideModule
- OSI 七层模型
- js实现定时添加代码
- UNION 和UNION ALL 的区别
- 数据库设计原则