📄 randomfiletest.java
字号:
import java.io.*;
class Student
{
String name;
int age;
final static int LEN=8;
public Student(String name,int age)
{
if(name.length()>LEN)
name=name.substring(0,8);//姓名多于8个字符则截掉
else
{
while(name.length()<LEN)//姓名少于8个字符则补空格
name=name+" ";
}
/*
byte[] b1=name.getBytes();
byte[] b2=new byte[LEN];
if(b1.length>LEN)
System.arraycopy(b1,0,b2,0,LEN);
else
{
System.arraycopy(b1,0,b2,0,b1.length);
for(int i=b1.length;i<LEN;i++)
b2[i]=(byte)32;//空格的ASCII码
}
name=new String(b2);
*/
this.name=name;
this.age=age;
}
}
public class RandomFileTest
{
public static void main(String args[])
{/*
Student s1=new Student("mary",18);
Student s2=new Student("abcdefgh",20);
Student s3=new Student("tomcruise",24);
*/
Student s1=new Student("姚明",18);
Student s2=new Student("奥尼尔",20);
Student s3=new Student("科比布莱恩特",24);
try
{
RandomAccessFile raf=new RandomAccessFile("student.txt","rw");
raf.write(s1.name.getBytes());
raf.writeInt(s1.age);
raf.write(s2.name.getBytes());
raf.writeInt(s2.age);
raf.write(s3.name.getBytes());
raf.writeInt(s3.age);
raf.close();
raf=new RandomAccessFile("student.txt","r");
int len=8;
raf.skipBytes(12);//跳过第一个学生的信息,其中姓名8字节,年龄4字节
System.out.println("第二个学生的信息:");
/*
String str="";
for(int i=0;i<len;i++)
str=str+(char)raf.readByte();
*/
byte[] b=new byte[len];
for(int i=0;i<len;i++)
b[i]=raf.readByte();
String str=new String(b);
System.out.println("姓名:"+str.trim());//丢掉多于空格
int age=raf.readInt();
System.out.println("年龄:"+age);
raf.seek(0);//将指针移到文件开始位置
System.out.println("第一个学生的信息:");
/*
str="";
for(int i=0;i<len;i++)
str=str+(char)raf.readByte();
*/
b=new byte[len];
for(int i=0;i<len;i++)
b[i]=raf.readByte();
str=new String(b);
System.out.println("姓名:"+str.trim());
age=raf.readInt();
System.out.println("年龄:"+age);
raf.skipBytes(12);//跳过第二个学生的信息
System.out.println("第三个学生的信息:");
/*
str="";
for(int i=0;i<len;i++)
str=str+(char)raf.readByte();
*/
b=new byte[len];
for(int i=0;i<len;i++)
b[i]=raf.readByte();
str=new String(b);
System.out.println("姓名:"+str.trim());
age=raf.readInt();
System.out.println("年龄:"+age);
raf.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -