⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 randomfiledemo.java

📁 JAVA编程思想源代码 值得一下 很难找的
💻 JAVA
字号:
package chapter10;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.String;

//员工类
class Employee {
	public String name = null;

	public int age = 0;

	public static final int LEN = 8;

	public Employee(String name, int age) {
		//控制员工姓名的长度在8个字符以内
		if (name.length() > LEN) {
			name = name.substring(0, 8); //subString(a,b)取出第a到b-1位置的字符
		} else {
			while (name.length() < LEN) {
				name += "\u0000"; //填充空格
			}
		}
		this.name = name;
		this.age = age;
	}
}

//测试
public class RandomFileDemo {
	public static void main(String[] args) throws IOException {
		Employee e1 = new Employee("zhangsan111", 23);
		Employee e2 = new Employee("lisi", 24);
		Employee e3 = new Employee("wangwu", 25);
		File f = new File("C://employee.txt");
		if (!f.exists()) {
			f.createNewFile();
		}
		RandomAccessFile ra = new RandomAccessFile(f, "rw");
		ra.write(e1.name.getBytes()); //write()只写入一个字节的数据或是字节数组 getBytes()转换成为字节数组
		ra.write(String.valueOf(e1.age).getBytes());
		ra.write("\r\n".getBytes()); //换行
		ra.write(e2.name.getBytes());
		ra.write(String.valueOf(e2.age).getBytes());
		ra.write("\r\n".getBytes());
		ra.write(e3.name.getBytes());
		ra.write(String.valueOf(e3.age).getBytes());
		ra.write("\r\n".getBytes());
		ra.close(); //关闭

		int len = 0;
		int agelen = 0;
		byte[] buf = new byte[8];
		byte[] agebuf = new byte[2];
		String strName = null;
		String strAge = null;
		//新建一个对象
		RandomAccessFile raf = new RandomAccessFile(f, "r");
		raf.skipBytes(12); //skipBytes()相对定位,开始读取第二行员工资料
		len = raf.read(buf); //len代表实际(有效)的字节数(有效字节存放在数组前部)
		agelen = raf.read(agebuf);
		strName = new String(buf, 0, len); //由Char数组转换为字符串
		strAge = new String(agebuf, 0, agelen);
		System.out.println(strName.trim() + ":" + strAge); //trim()方法去掉字符串中的不可显示的字符

		raf.seek(0); //绝对定位,开始读取第一行员工资料
		len = raf.read(buf); //len代表实际(有效)的字节数
		agelen = raf.read(agebuf);
		strName = new String(buf, 0, len);
		strAge = new String(agebuf, 0, agelen);
		System.out.println(strName.trim() + ":" + strAge);

		raf.readLine(); //读取第一行,放弃接收数据
		raf.readLine(); //读取第二行,放弃接收数据
		String str = raf.readLine(); //读取第三行员工资料,接收数据
		strName = str.substring(0, 7);
		strAge = str.substring(8, 10);
		System.out.println(strName.trim() + ":" + strAge);
		raf.close();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -