动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

实例解析Java随机流

05-24 17:03 737浏览
举报 T字号
  • 大字
  • 中字
  • 小字

所谓Java随机流就是RandomAccessFile类创建的流,RandomAccessFile类既不是InputStream类的子类,也不是OutputStream类的子类。随机流不属于IO流,支持对文件的读取和写入随机访问。当准备对一个文件进行读写操作时,创建一个指向该文件的随机流即可,这样既可以从这个流中读取文件的数据,也可以通过这个流写入数据到文件。

随机流是一种具备双向传输能力的特殊流。IO流中的各个流都只能实现单向的输入或输出操作,如果想对一个文件进行读写操作就要建立两个流。随机流 Random Access File 类创建的流既可以作为输入流,也可以作为输出流,因此建立一个随机流就可以完成读写操作。

RandomAccessFile类的定义:

  • public class RandomAccessFile extends Object
  • implements DataOutput, DataInput, Closeable

构造方法:

public RandomAccessFile(File file,String mode) throws FileNotFoundException

Random Access File 类与其他流不同,它既不是 Input Stream 类的子类,也不是 Output Stream 的子类,而是 java.lang.Object 根类的子类。RandomAccessFile最大的特点实在数据的读取处理上,因为所有的数据时按照固定的长度进行的保存,所以读取的时候就可以进行跳字节读取。

主要方法:

  • public int skipBytes(int n) throws IOException//向下跳
  • public void seek(long pos) throws IOException//向回跳

随机流的输入和输出实例:

/*
*实现文件的保存
*/
package IODemo;
import java.io.*;
public class RandomAccessFileDemo{
public static void main(String[]args)throws Exception{
//TODO Auto-generated method stub
File file=new File("D:"+File.separator+"mldn.txt");
RandomAccessFile raf=new RandomAccessFile(file,"rw");
String[]names=new String[]{"zhangsan","wangwu","lisi"};//名字占8位
int age[]=new int[]{30,20,16};//年龄占4位
for(int x=0;x<names.length;x++){
raf.write(names[x].getBytes());
raf.writeInt(age[x]);
}
raf.close();
}
}
/*
*读取数据
*/
package IODemo;
import java.io.*;
public class RandomAccessFileDemo2{
public static void main(String[]args)throws Exception{
//TODO Auto-generated method stub
File file=new File("D:"+File.separator+"mldn.txt");
RandomAccessFile raf=new RandomAccessFile(file,"rw");
{//读取lisi数据,跳过24位
raf.skipBytes(24);
byte[]data=new byte[8];
int len=raf.read(data);
System.out.println("姓名:"+new String(data,0,len).trim()+"年龄:"+raf.readInt());
}
{//读取wangwu数据,回跳12位
raf.seek(12);
byte[]data=new byte[8];
int len=raf.read(data);
System.out.println("姓名:"+new String(data,0,len).trim()+"年龄:"+raf.readInt());
}
{//读取zhangsan数据,回跳到顶点
raf.seek(0);
byte[]data=new byte[8];
int len=raf.read(data);
System.out.println("姓名:"+new String(data,0,len).trim()+"年龄:"+raf.readInt());
}
}
}

Random Access File 类的实例对象支持对文件的随机访问。这种随机访问文件的过程可以看作是访问文件系统中的一个大型 Byte 数组,指向数组位置的隐含指针称为文件指针。输入操作从文件指针位置开始读取字节,并随着对字节的读取移动此文件指针。输出操作从文件指针位置开始写入字节,并随着对字节的写入而移动此文件指针。因此,随机流可以用于多线程文件下载或上传,为快速完成访问提供了便利。当然,Java随机流的用法还要很多,我们可以观看动力节点在线的免费视频课程,继续深入学习Java随机流。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵652
程序员代码小兵652

113篇文章贡献392215字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消