package test.java.io;

import java.io.RandomAccessFile;

public class RandomAccFile {

    public static void main(String[] args) throws Exception {
Employee emp1=new Employee("zhangsan",280);
Employee emp2=new Employee("李四",18);
Employee emp3=new Employee("tom",22); //表示该文件可读可写
RandomAccessFile rdf=new RandomAccessFile("employment.txt","rw");
//rdf.write(emp1.name.getBytes()); //write方法只能作用于英文,对中文
rdf.writeChars(emp1.name); //在java中不管是英文字符还是中文字符都占有2个字节,它向文件中写入的是字符 16字节
rdf.writeInt(emp1.age); //写进去的是4个字节,write写的是一个字节 4个字节 rdf.writeChars(emp2.name);
rdf.writeInt(emp2.age); //writeChars写入的每个字符占有2个字节
rdf.writeChars(emp3.name);
rdf.writeInt(emp3.age); rdf.close(); //关闭 String strName="";
//表示文件只能读
RandomAccessFile readdf=new RandomAccessFile("employment.txt","r"); //读李四的内容,跳过20个字节
readdf.skipBytes(Employee.LEN*2+4);
//for循环是根据字符来读取的,因此它不用乘以2
for(int i=0; i<Employee.LEN;i++ )
{
strName+=readdf.readChar();//每次只读一个字符
}
//byte[] buf = new byte[Employee.LEN*2+4];
//int len=0;
//len= readdf.read(buf,0,Employee.LEN);
//将字节数组转换成字符串
//String strName=new String(buf,0,Employee.LEN);
//readdf.read()读取得是一个字节,一旦年龄大于256,就会显示当前值减去256的结果
//System.out.println(strName+":"+readdf.read());
System.out.println(strName+": "+readdf.readInt());//readInt获取的是2个字节 //读张三的内容
strName="";
readdf.seek(0);
for(int i=0; i<Employee.LEN;i++ )
{
strName+=readdf.readChar();//每次只读一个字符
}
System.out.println(strName+": "+readdf.readInt()); //读取tom的数据
strName="";
readdf.skipBytes(Employee.LEN*2+4);
for(int i=0; i<Employee.LEN;i++ )
{
strName+=readdf.readChar();//每次只读一个字符
}
System.out.println(strName+": "+readdf.readInt());
}
}
package test.java.io;

public class Employee {
public String name=null;
public int age=0;
public final static int LEN=8;
public Employee(String name,int age)
{
if(name.length()>LEN)
{
name=name.substring(0,LEN);
}
else
{
while(name.length()<8)
{
name+='\u0000';//空格李四
}
}
this.name=name;
this.age=age; } }

JavaIO之RandomAccessFile随机访问文件的更多相关文章

  1. Java I/O(三)各种Reader和Writer读写器、RandomAccessFile随机访问文件、序列化

    2019 01/01 八.Reader和Writer读写器 前面讲的输入输出流的基本单位都是字节,因此可以称为“字节流”,读写器是以字符为基本单位,可以称为“字符流”.它们的使用方法非常相似,因此我考 ...

  2. 18 IO流(十五)——RandomAccessFile随机访问文件及使用它进行大文件切割的方法

    本文部分内容转自:https://blog.csdn.net/nightcurtis/article/details/51384126 1.RandomAccessFile特点 RandomAcces ...

  3. Java基础-IO流对象之随机访问文件(RandomAccessFile)

    Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...

  4. MappedByteBuffer高速缓存文件、RandomAccessFile随机访问

    说到高速缓存存储,处理读写文件,那就不得不说MappedByteBuffer. 看了好多文章以后写一下自己的总结. 在这里先介绍一下相关的类与方法. 先说一下Buffer.ByteBuffer.Map ...

  5. Java IO详解(六)------随机访问文件流

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

  6. Java I/O---RandomAccessFile类(随机访问文件的读取和写入)

    1.JDK API中RandomAccessFile类的描述 此类的实例支持对随机访问文件的读取和写入.随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组.存在指向该隐含数组的光标或索引 ...

  7. Java开发笔记(八十七)随机访问文件的读写

    前面介绍了字符流读写文件的两种方式,包括文件字符流和缓存字符流,但是它们的写操作都存在一个问题:不管是write方法还是append方法,都只能从文件开头写入,而不能追加到文件末尾或者在文件中间某个位 ...

  8. Java IO详解(七)------随机访问文件流

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

  9. [19/04/03-星期三] IO技术_其它流(RandomAccessFile 随机访问流,SequenceInputStream 合并流)

    一.RandomAccessFile 随机访问流 [版本1] /* *RandomAccessFile 所谓随机读取就是 指定位置开始或指定位置结束 的读取写入文件 * 实现文件的拆分与合并 模拟下载 ...

随机推荐

  1. 关于Linux系统调用,内核函数【转】

    转自:http://blog.csdn.net/ubuntulover/article/details/5988220 早上听人说到某个程序的一部分是内核态,另一部分是用户态,需要怎么怎么.当时突然想 ...

  2. vim快捷键笔记【原创】

    Vim zR  全部展开 zM全部合并 vim  快捷键 shift   +  i      (‘I’)    进行编辑 shift   +  4     (‘$’)    跳到行尾 shift   ...

  3. git环境搭建

    Linux kernel  的官方 GIT地址是: http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git 可以从这个地 ...

  4. 一、导入、导出远程Oracle数据库

    一.导入.导出远程Oracle数据库  其语法实示例如下:    imp/exp [username[/password[@service]]]   其中service是服务实例名,关于如何创建服务实 ...

  5. CodeSmith datagridview属性

    private void button1_Click(object sender, EventArgs e) //将数据库里的数据直接显示在datagridview1里面 { SqlConnectio ...

  6. Debian 如何更改hdmi接口输出的分辨率

    1. 先删除无用的文件: a) Boot/boot.src b) Boot/script.bin 2. 打开boot/script.fex,找到disp_init节点 a) 将screenX_outp ...

  7. Linux删除文件后空间没有释放

    .COMMAND默认以9个字符长度显示的命令名称.可使用+c参数指定显示的宽度,若+c后跟的参数为零,则显示命令的全名.PID:进程的ID号.PPID父进程的IP号,默认不显示,当使用-R参数可打开. ...

  8. python练习程序(c100经典例2)

    题目: 企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%:20万到40 ...

  9. windows下用mingw编译linux项目

    1.下载安装mingw32 2.将mingw下bin和msys\1.0下bin设置为系统path 3.启动msys.bat 4.cd到项目目录 5.输入./configure 6.输入make 7.输 ...

  10. 【英语】Bingo口语笔记(45) - Pass系列