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. Win XP 如何禁用系统的自动更新

    想关闭系统的自动更新. 打开[控制面板]/[安全中心],发现“自动更新”和“更改安全中心通知我的方式”,都已成了灰色,无法更改. 网上查了一下,找到了这样一个处理方法:将[服务]中一个名为“Autom ...

  2. Tmall发送码asp验证sing(自有码开发)

    <%''查询通知应答类'============================================================================'api说明:'g ...

  3. Hadoop学习过程知识积累

    1. Hadoop 64位centos 下编译 hadoop 2.6.0 源码 2. 学习问题汇总 hadoop多次格式化后,导致datanode启动不了 3. HDFS Hadoop中NameNod ...

  4. Java中的private、protected、public和default的区别

        (1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. (2)对于protec ...

  5. laravel下的团队开发

    当你的团队在开发一个大型应用时,该应用的不同部分可能以不同的速度前进.比如,设想下面的场景:一个开发热源被分配 数据层 的backend工作,而另外一个开发人员做front-end和web/contr ...

  6. VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

      开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件.(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网 ...

  7. 《深入浅出嵌入式底层软件开发》—1. ARM汇编编程基础

    1.1 ARM CPU寄存器 ARM的汇编编程,本质上就是针对CPU寄存器的编程,所以要搞清楚ARM有哪些寄存器:ARM寄存器分为两类:普通寄存器和状态寄存器:普通寄存器一共有16个,分别为R0——R ...

  8. acdream 1683 村民的怪癖(KMP,经典变形)

    Problem Description 娜娜费劲九牛二虎之力终于把糖果吃完了(说好的吃不完呢?骗人,口亨~),于是,缘溪行,忘路之远近.忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷,娜娜甚异之 ...

  9. JDK,JRE,JVM区别与联系-理解与概括

    我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析 ...

  10. matlab中,在灰度解剖图上叠加阈值图,by by DR. Rajeev Raizada

    1.参考 reference 1. tutorial主页:http://www.bcs.rochester.edu/people/raizada/fmri-matlab.htm. 2.speech_b ...