Java IO流-随机访问流
2017-11-05 19:45:51
- RandomAccessFile类(随机访问流)
RandomAccessFile类:是Object的子类,此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。
*构造方法

mode:(一般只使用前两个参数)

*常用方法



public class Demo5 {
public static void main(String[] args) throws IOException {
read();
}
public static void write()throws IOException{
RandomAccessFile raf = new RandomAccessFile("E:/test.txt", "rw");
raf.writeInt(50);
raf.writeChar('a');
raf.writeUTF("世界");
raf.close();
}
public static void read() throws IOException{
RandomAccessFile raf = new RandomAccessFile("E:/test.txt", "rw");
int i= raf.readInt();
System.out.println(i);
System.out.println("当前文件位置:"+raf.getFilePointer());
char c = raf.readChar();
System.out.println(c);
System.out.println("当前文件位置:"+raf.getFilePointer());
String s = raf.readUTF();
System.out.println(s);
System.out.println("当前文件位置:"+raf.getFilePointer());
raf.close();
}
}
代码的结果如下:
50
当前文件位置:4 //因为Java中int类型占4个字节
a
当前文件位置:6 //Java中采用的是Unicode编码,所以char类型占2个字节
世界
当前文件位置:14
/*
从当前文件指针开始读取前两个字节,类似于使用 readUnsignedShort。此值给出已编码字符串中随后的字节数,而不是结果字符串的长度。随后的字节然后解释为 UTF-8 修改版格式的字节编码字符,并转换为字符。所以是6+2+3*2
*/
这里还可以使用seek来设置文件指针。
public static void read() throws IOException{
RandomAccessFile raf = new RandomAccessFile("E:/test.txt", "rw");
raf.seek(4);
char c = raf.readChar();
System.out.println(c);
raf.close();
}
Java IO流-随机访问流的更多相关文章
- java 21 - 12 随机访问流(不属于IO流)
随机访问流: RandomAccessFile类不属于流,是Object类的子类. 但它融合了InputStream和OutputStream的功能. 支持对文件的随机访问读取和写入. public ...
- Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)
1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...
- Java基础知识强化之IO流笔记63:随机访问流RandomAccessFile
1. 随机访问流RandomAccessFile RandomAccessFile类不属于流,是Object类的子类.但它融合了InputStream和OutputStream的功能.支持对随机访问文 ...
- [19/04/03-星期三] IO技术_其它流(RandomAccessFile 随机访问流,SequenceInputStream 合并流)
一.RandomAccessFile 随机访问流 [版本1] /* *RandomAccessFile 所谓随机读取就是 指定位置开始或指定位置结束 的读取写入文件 * 实现文件的拆分与合并 模拟下载 ...
- 序列流、对象操作流、打印流、标准输入输出流、随机访问流、数据输入输出流、Properties(二十二)
1.序列流 * 1.什么是序列流 * 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推.* 2.使用方式 * 整合两个 ...
- keytool 错误: java.io.FileNotFoundException: 拒绝访问
keytool 错误: java.io.FileNotFoundException: 拒绝访问 打开命令行,切换到D:\AndroidStudioProjects\MyApplication\app目 ...
- jmap Exception in thread "main" java.io.IOException: 拒绝访问。
环境: 现有一个独立运行的系统S(有独立的jre,但是没jdk),现想通过jmap导出其内存堆栈信息.于是另外安装一个jdk.可是jdk的版本跟S系统的jre不能对应上.出了很多错误. 总是报错: C ...
- Java IO操作——数据操作流DataOutputStream和DataInputStream的使用
学习目标 掌握DataOutputStream和DataInputStream的作用 可以使用DataOutputStream和DataInputStream写入和读入数据 数据操作流 在io包中, ...
- JAVA IO 字节流与字符流
文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节. ...
随机推荐
- 记录web项目部署到阿里云服务器步骤
(使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以完成打包,如下图: 2.安装Xshel ...
- ubuntu video,gdm swith
如果已经安装LightDM和GDM登录显示器.那么在Ubuntu下怎么在各种DM间任意切换呢? 以切换到GDM为例,打开终端,使用命令: sudo dpkg-reconfigure gdm 如果已经安 ...
- flask的session用法2
from flask import Flask, session, redirect, url_for, escape, request app = Flask(__name__) @app.rout ...
- Nmap介绍
1.Nmap介绍 Nmap用于列举网络主机清单.管理服务升级调度.监控主机或服务运行状况.Nmap可以检测目标机是否在线.端口开放情况.侦测运行的服务类型及版本信息.侦测操作系统与设备类型等信息. 1 ...
- 棋盘游戏---hdu1281(最大匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 题目大意:就是车和车之间不能发生攻击.还有一部分位置不可以放置棋子. 解题思路:一行一列 ...
- Python开发【Tornado】:异步Web服务(二)
真正的 Tornado 异步非阻塞 前言: 其中 Tornado 的定义是 Web 框架和异步网络库,其中他具备有异步非阻塞能力,能解决他两个框架请求阻塞的问题,在需要并发能力时候就应该使用 Torn ...
- Python开发【模块】:sqlalchemy
一.对象映射关系(ORM) orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却 ...
- 山寨HTML5API classList类
preface 认为自己去写一些类,你真的会找到自己不足的地方.事实上厉害不是你实现一个类.而是你怎样去设计一个类,能让开发人员更加easy操作. 对于这个操作样式,能够通过javascript訪问s ...
- easyUI datagrid 清空
最近在做一个管理系统,出于一些需要,经常要将一些datagrid清空.然后easyUI本身并没有自带的方法,然后自己动手丰衣足食吧. 清空无外乎两种思路,删除现有数据和填充空数据. 1.删除数据 va ...
- Underscore.js (1.7.0)-集合(Collections)(25)
稽核函数(数组或对象) each_.each(list, iteratee, [context]) 别名: forEach 遍历list中的所有元素,按顺序用遍历输出每个元素.如果传递了context ...