[Java开发之路](7)RandomAccessFile类具体解释
RandomAccessFile适用于大小已知的记录组成的文件。提供的对文件訪问。既能够读文件。也能够写文件,而且支持随机訪问文件。能够訪问文件的任何位置。
文件里记录的大小不一定都同样。仅仅要我们知道记录的大小和位置。可是该类仅限于操作文件。
它是一个直接继承Object的,独立的类。
此外。它的构造方法还须要一个參数来表示打开模式(仅仅读方式
r 读写方式 rw)。它不支持仅仅写文件。
| 方法 | 描写叙述 |
| void close() | 关闭此随机訪问文件流并释放与该流关联的全部系统资源。 |
| FileChannel getChannel () | 返回与此文件关联的唯一 FileChannel 对象。 |
| FileDescriptor getFD () | 返回与此流关联的不透明文件描写叙述符对象。 |
| long getFilePointer () | 返回此文件里的当前偏移量,用来查找当前所处的位置。 |
| long length() | 返回此文件的长度。 |
| int read() | 从此文件里读取一个数据字节 |
| int read(byte[] b) | 将最多 b.length 个数据字节从此文件读入 byte 数组。 |
| int read(byte[] b,int off,int len) | 将最多 len 个数据字节从此文件读入 byte 数组。 |
| boolean readBoolean() | 从此文件读取一个 boolean。 |
| byte readByte() | 从此文件读取一个有符号的八位值。 |
| char readChar() | 从此文件读取一个字符 |
| double readDouble() | 从此文件读取一个 double。 |
| float readFloat() | 从此文件读取一个 float。 |
| void readFully(byte[] b) | 将 b.length 个字节从此文件读入 byte 数组,并从当前文件指针開始。 |
| void readFully(byte[] b,int off,int len) | 将正好 len 个字节从此文件读入 byte 数组,并从当前文件指针開始。 |
| int readInt() | 从此文件读取一个有符号的 32 位整数。 |
| String readLine() | 从此文件读取文本的下一行。 |
| long readLong() | 从此文件读取一个有符号的 64 位整数。 |
| short readShort() | 从此文件读取一个有符号的 16 位数。 |
| int readUnsignedByte() | 从此文件读取一个无符号的八位数 |
| int readUnsignedShort() | 从此文件读取一个无符号的 16 位数。 |
| String readUTF() | 从此文件读取一个字符串。 |
| void seek(long pos) | 设置到此文件开头測量到的文件指针偏移量,在该位置发生下一个读取或写入操作。 |
| void setLength(long newLength) | 设置此文件的长度。 |
| int skipBytes(int n) | 尝试跳过输入的 n 个字节以丢弃跳过的字节。 |
| void write(byte[] b) | 将 b.length 个字节从指定 byte 数组写入到此文件,并从当前文件指针開始。 |
| void write(byte[] b, int off, int len) | 将 len 个字节从指定 byte 数组写入到此文件。并从偏移量 off 处開始。 |
| void write(int b) | 向此文件写入指定的字节。 |
| void writeBoolean(boolean v) | 按单字节值将 boolean 写入该文件。 |
| void writeByte(int v) | 按单字节值将 byte 写入该文件 |
| void writeBytes(String s) | 按字节序列将该字符串写入该文件。 |
| void writeChar(int v) | 按双字节值将 char 写入该文件。先写高字节。 |
| void writeChars(String s) | 按字符序列将一个字符串写入该文件。 |
| void writeDouble(double v) | 使用 Double 类中的 doubleToLongBits 方法将双精度參数转换为一个 long,然后按八字节数量将该 long 值写入该文件,先定高字节。 |
| void writeFloat(float v) | 使用 Float 类中的 floatToIntBits 方法将浮点參数转换为一个 int,然后按四字节数量将该 int 值写入该文件。先写高字节。 |
| void writeInt(int v) | 按四个字节将 int 写入该文件,先写高字节。 |
| void writeLong(long v) | 按八个字节将 long 写入该文件,先写高字节 |
| void writeShort(int v) | 按两个字节将 short 写入该文件,先写高字节。 |
| void writeUTF(String str) | 使用 modified UTF-8 编码以与机器无关的方式将一个字符串写入该文件。 |
package com.qunar.bean;import java.io.File;import java.io.RandomAccessFile;import java.util.Arrays;public class FileDemo {public static void main(String[] args) {String pathname = "D:\\Recommended system.txt";// 创建文件实例File file = new File(pathname);try {// 推断文件是否存在if(!file.exists()){file.createNewFile();}//if// 读写方式打开文件RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");System.out.println("当前所处的位置:"+randomAccessFile.getFilePointer());// write 从当前指针開始写入,写入一个字节randomAccessFile.write('A');System.out.println("当前所处的位置:"+randomAccessFile.getFilePointer());randomAccessFile.write('B');int num = 0x7fffffff;// 假设用write方法。每次仅仅能写一个字节。须要写4次randomAccessFile.write(num >>> 24);randomAccessFile.write(num >>> 16);randomAccessFile.write(num >>> 8);randomAccessFile.write(num);System.out.println("当前所处的位置:"+randomAccessFile.getFilePointer());// 或者是用writeInt方法 一次写入randomAccessFile.writeInt(num);System.out.println("当前所处的位置:"+randomAccessFile.getFilePointer());// 文件指针指向文件开头randomAccessFile.seek(0);// 一次性读取 把文件里内容都读到字节数组中byte[] buffer = new byte[(int)randomAccessFile.length()];randomAccessFile.read(buffer);for (byte b : buffer) {// 16进制输出System.out.print(Integer.toHexString(b)+" ");}//forrandomAccessFile.close();} catch (Exception e) {e.printStackTrace();}}}
package com.qunar.bean;import java.io.File;import java.io.RandomAccessFile;public class FileDemo {public static void main(String[] args) {String pathname = "D:\\Recommended system.txt";// 创建文件实例File file = new File(pathname);try {// 推断文件是否存在if(!file.exists()){file.createNewFile();}//if// 读写方式打开文件RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");// 写值for(int i = 0;i < 5;++i){randomAccessFile.writeInt(i);}//for// 将文件指针移到第二个Int值后randomAccessFile.seek(2*4);// 覆盖第三个Int值randomAccessFile.writeInt(6);// 文件指针指向文件开头randomAccessFile.seek(0);// 输出for (int i = 0;i < 5;++i) {System.out.print(randomAccessFile.readInt()+" ");}//forrandomAccessFile.close();} catch (Exception e) {e.printStackTrace();}}}
package com.qunar.bean;import java.io.File;import java.io.RandomAccessFile;public class FileDemo {public static void main(String[] args) {String pathname = "D:\\Recommended system.txt";// 创建文件实例File file = new File(pathname);try {RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");// 下面向file文件里写数据// 占4个字节randomAccessFile.writeInt(2015);// 占8个字节randomAccessFile.writeDouble(12.23);// 占2个字节randomAccessFile.writeShort(19);System.out.println("当前位置:"+randomAccessFile.getFilePointer());randomAccessFile.writeUTF("欢迎来到小斯的博客");System.out.println("当前位置:"+randomAccessFile.getFilePointer());// 占2个字节randomAccessFile.writeChar('Y');System.out.println("当前位置:"+randomAccessFile.getFilePointer());randomAccessFile.writeUTF("小斯的博客欢迎你");// 把文件指针位置设置到文件起始处randomAccessFile.seek(0);System.out.println("读取一个Int值:"+randomAccessFile.readInt());System.out.println("读取一个Double值:"+randomAccessFile.readDouble());System.out.println("读取一个Short值:"+randomAccessFile.readShort());System.out.println("读取一个字符串:"+randomAccessFile.readUTF());// 将文件指针跳过2个字节randomAccessFile.skipBytes(2);System.out.println("读取一个字符串:"+randomAccessFile.readUTF());randomAccessFile.close();} catch (Exception e) {e.printStackTrace();}}}
[Java开发之路](7)RandomAccessFile类具体解释的更多相关文章
- 我的Java开发学习之旅------>工具类:将播放器的进度值转换成相应的时间格式
在我的博客<我的Java开发学习之旅------>Java 格式化类(java.util.Formatter)基本用法,地址:http://blog.csdn.net/ouyang_pen ...
- Java基础(二十八)Java IO(5)RandomAccessFile类与过滤器流(Filter Stream)
一.RandomAccessFile类 使用RandomAccessFile类可以读取任意位置数据的文件. 1.构造方法 RandomAccessFile(String name, String mo ...
- [Java开发之路](6)File类的使用
1. 构造方法 构造方法 描写叙述 File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建一个新的文件实例. File(String parent , String ...
- 我的Java开发学习之旅------>工具类:Java获取字符串和文件进行MD5值
ps:这几天本人用百度云盘秒传了几部大片到云盘上,几个G的文件瞬秒竟然显示"上传成功"!这真让我目瞪口呆,要是这样的话,那得多快的网速,这绝对是不可能的,也许这仅是个假象.百度了一 ...
- [Java开发之路](8)输入流和输出流
1. Java流的分类 按流向分: 输入流: 能够从当中读入一个字节序列的对象称作输入流. 输出流: 能够向当中写入一个字节序列的对象称作输出流. 这些字节序列的来源地和目的地能够是文件,并且通常都是 ...
- [Java开发之路](23)装箱与拆箱
1. 简单介绍 大家对基本数据类型都很熟悉.比如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性,比方基本类型不能调用方法.功能简单. ..,为了让基本 ...
- 我的Java开发学习之旅------>工具类:Java使用正则表达式分离出字符串中的中文和英文
今天看到一个工具类使用正则表达式将一大段字符串中的中文和英文都分离出来了,在此记录一下,读者可以收藏! import java.util.ArrayList; import java.util.Col ...
- [Java开发之路](9)对象序列化与反序列化
1. 对象序列化 当你创建对象时.仅仅要你须要.它会一直存在,可是程序终止时,不管何时它都不会继续存在.虽然这样做是很有意义的,可是在某些情况下.假设程序不执行时扔能存在而且保存其信息,那将对我们很实 ...
- [Java开发之路](16)学习log4j日志
1. 新建一个Javaproject.导入Jar包(log4j-1.2.17.jar) Jar包下载地址:点击打开链接 2. 配置文件:创建并设置log4j.properties # 设置 log4j ...
随机推荐
- redis动态添加内存,动态配置,无需重启
在redis的使用过程中,有时候需要急需修改redis的配置,比如在业务运行的情况下,内存不够怎么办,这时要么赶紧删除无用的内存,要么扩展内存.如果有无用的内容可删除那么所有问题都已经解决.如果内容都 ...
- 利用道格拉斯·普客法(DP法)压缩矢量多边形(C++)
1.算法描述 经典的Douglas-Peucker算法(简称DP法)描述如下: (1)在曲线首尾两点A,B之间连接一条直线AB,该直线为曲线的弦: (2)得到曲线上离该直线段距离最大的点C,计算其与A ...
- [Offer收割]编程练习赛39
公平分队 #pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #includ ...
- 仿QQ浏览器mac版官网主页 html+css3特效
这是一款超酷的CSS3动态背景动画特效,CSS3仿QQ浏览器官网彗星动画背景特效. 在线演示本地下载
- 云信 短信发送 demo
package com.dataTaskListener; import org.apache.commons.httpclient.Header; import org.apache.commons ...
- ACM___数学___九的余数
九的余数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余 ...
- mac 下安装 mariadb
通过brew 安装: brew install mariadb 初始化数据库 cd /usr/local/Cellar/mariadb/10.0.10/scripts mysql_install_db ...
- UML+模式设计概述
转自于:http://blog.csdn.net/rexuefengye/article/details/13020225 工程学:工程庞大到一定程度必须是用工程学方法,好比直接用水泥沙子建设实用的摩 ...
- 02--C编程细节整理(一)
用C语言比较多,这篇是平时攒下的.有些内容在工作后可能会很常见,但是不用容易忘,所以就写篇博客吧. 1. printf的用法 %*可以用来跳过字符,可以用于未知缩进.像下面一样. for ...
- 提示 npm update check failed
执行npm命令时出现以下提示 虽然不影响代码运行,但总觉得看了很碍事, 查找资料后发现是因为文件夹权限的问题, .config / configstore文件夹中包含一个文件:update-notif ...