JavaIO之RandomAccessFile随机访问文件
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随机访问文件的更多相关文章
- Java I/O(三)各种Reader和Writer读写器、RandomAccessFile随机访问文件、序列化
2019 01/01 八.Reader和Writer读写器 前面讲的输入输出流的基本单位都是字节,因此可以称为“字节流”,读写器是以字符为基本单位,可以称为“字符流”.它们的使用方法非常相似,因此我考 ...
- 18 IO流(十五)——RandomAccessFile随机访问文件及使用它进行大文件切割的方法
本文部分内容转自:https://blog.csdn.net/nightcurtis/article/details/51384126 1.RandomAccessFile特点 RandomAcces ...
- Java基础-IO流对象之随机访问文件(RandomAccessFile)
Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...
- MappedByteBuffer高速缓存文件、RandomAccessFile随机访问
说到高速缓存存储,处理读写文件,那就不得不说MappedByteBuffer. 看了好多文章以后写一下自己的总结. 在这里先介绍一下相关的类与方法. 先说一下Buffer.ByteBuffer.Map ...
- Java IO详解(六)------随机访问文件流
File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...
- Java I/O---RandomAccessFile类(随机访问文件的读取和写入)
1.JDK API中RandomAccessFile类的描述 此类的实例支持对随机访问文件的读取和写入.随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组.存在指向该隐含数组的光标或索引 ...
- Java开发笔记(八十七)随机访问文件的读写
前面介绍了字符流读写文件的两种方式,包括文件字符流和缓存字符流,但是它们的写操作都存在一个问题:不管是write方法还是append方法,都只能从文件开头写入,而不能追加到文件末尾或者在文件中间某个位 ...
- Java IO详解(七)------随机访问文件流
File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...
- [19/04/03-星期三] IO技术_其它流(RandomAccessFile 随机访问流,SequenceInputStream 合并流)
一.RandomAccessFile 随机访问流 [版本1] /* *RandomAccessFile 所谓随机读取就是 指定位置开始或指定位置结束 的读取写入文件 * 实现文件的拆分与合并 模拟下载 ...
随机推荐
- JavaScript 中 2个等号(==)和 3个等号(===)之间的区别
JavaScript(JS)中有3个和等号(=)相关的操作符:赋值运算符(=).等于(==).恒等于(===). 赋值运算符不多说了. 这里说说等于和恒等于. ==,等于:两边值类型不同的时候,会自动 ...
- Oracle —— 表结构相关的SQL
1.表基本信息(Table) select * from user_tables t, user_tab_comments c where c.table_name = t.table_name an ...
- 深入浅出:Linux设备驱动之字符设备驱
一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面向流 ...
- 加密解密(6)RSA算法过程图解
转自: http://blog.csdn.net/21aspnet/article/details/7249401 RSA算法 RSA公钥加密算法是1977年由Ron Rivest.Adi Shami ...
- 在cmd中登录ftp服务器
http://jingyan.baidu.com/article/0bc808fc8778ee1bd485b93b.html C:\Users\Administrator>ftpftp> ...
- java中final关键字
一.final修饰方法 禁止任何继承类修改它的定义,保证在继承中使方法行为保持不闲并且不会被覆盖. final修饰的方法,同意编译器针对该方法的调用转为内嵌调用.(类似c++ 中的inline?) p ...
- 详解javascript中的call, apply
一些学js的同学一看到call, apply, 就蒙了, 感觉不好懂, 看的头大. 今天我们就一起来研究一下这2个东东.彻底弄清楚它们的用法. 定义: call, apply是函数的方法, 只有函数才 ...
- JVM工作原理
作为一种阅读的方式了解下jvm的工作原理 JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JV ...
- [ionic开源项目教程] - 第13讲 Service层优化,提取公用Service,以及生活和农业两大模块的实现
关注微信订阅号:TongeBlog,可查看[ionic开源项目]全套教程. 这一讲主要实现生活和农业两大模块的实现,在这个过程中,对service层提取出一个公用的BaseService. 这一讲分为 ...
- Asp.Net保存session的三种方法
C#中保存Session的三种方法及Web.Config设置 1.保存session到sql server,需要指定Sql Server服务器,这种方法因为要读写数据库最慢 <sessionSt ...