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 所谓随机读取就是 指定位置开始或指定位置结束 的读取写入文件 * 实现文件的拆分与合并 模拟下载 ...
随机推荐
- 关于Linux系统调用,内核函数【转】
转自:http://blog.csdn.net/ubuntulover/article/details/5988220 早上听人说到某个程序的一部分是内核态,另一部分是用户态,需要怎么怎么.当时突然想 ...
- vim快捷键笔记【原创】
Vim zR 全部展开 zM全部合并 vim 快捷键 shift + i (‘I’) 进行编辑 shift + 4 (‘$’) 跳到行尾 shift ...
- git环境搭建
Linux kernel 的官方 GIT地址是: http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git 可以从这个地 ...
- 一、导入、导出远程Oracle数据库
一.导入.导出远程Oracle数据库 其语法实示例如下: imp/exp [username[/password[@service]]] 其中service是服务实例名,关于如何创建服务实 ...
- CodeSmith datagridview属性
private void button1_Click(object sender, EventArgs e) //将数据库里的数据直接显示在datagridview1里面 { SqlConnectio ...
- Debian 如何更改hdmi接口输出的分辨率
1. 先删除无用的文件: a) Boot/boot.src b) Boot/script.bin 2. 打开boot/script.fex,找到disp_init节点 a) 将screenX_outp ...
- Linux删除文件后空间没有释放
.COMMAND默认以9个字符长度显示的命令名称.可使用+c参数指定显示的宽度,若+c后跟的参数为零,则显示命令的全名.PID:进程的ID号.PPID父进程的IP号,默认不显示,当使用-R参数可打开. ...
- python练习程序(c100经典例2)
题目: 企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%:20万到40 ...
- windows下用mingw编译linux项目
1.下载安装mingw32 2.将mingw下bin和msys\1.0下bin设置为系统path 3.启动msys.bat 4.cd到项目目录 5.输入./configure 6.输入make 7.输 ...
- 【英语】Bingo口语笔记(45) - Pass系列