[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 ...
随机推荐
- J2EE7与Servlet3.x
J2EE7结构图 JWS:即Java Web Service,指与webservice相关的JavaEE技术部分,webservice是一种基于XML的独立的.跨平台的.互操作的应用程序,XML又包含 ...
- 2017-3-8 leetcode 380 381 532
l两周以来,第一次睡了个爽,开心! ================================= leetcode380 https://leetcode.com/problems/insert ...
- Hadoop系列之实验环境搭建
实验环境基本配置 硬件:硬盘单节点50GB,1G内存,单核. 操作系统:CentOS6.4 64bit Hadoop:2.20 64bit(已编译) JDK:jdk1.7 磁盘分区: / 5GB /b ...
- 2.Ventuz Designer常用工具介绍
Ventuz Designer常用工具介绍 1. 打开Ventuz Designer 图1.1 2. Ventuz Designer第一个界面 图2.1 Recent Projects:最近创建的 ...
- 单元测试之Mock
为什么需要Mock. 真实对象具有不确定的行为.所以会产生不可预测的结果. 真实对象很难被创建. 真实对象的某些行为很难被触发(如网络错误). 真实对象令程序的运行速度很慢. 真实对象有(或者是)用户 ...
- javascript中的构造函数和原型及原型链
纯属个人理解,有错误的地方希望大牛指出,以免误人子弟 1.构造函数: 构造函数的作用 : 初始化由new创建出来的对象 new 的作用: 创建对象(空对象) new 后面跟的是函数调用,使用ne ...
- android黑科技系列——手机端破解神器MT的内购VIP功能破解教程
一.前言 在破解app的时候,我们现在几乎都是在PC端进行操作,但是之前bin神的MT管理器,可以在手机端直接破解,不过也有很大的局限性,但是对于一些简单的app破解没问题的.这个工具其实原理也很简单 ...
- 逐步理解Java中的线程安全问题
什么是Java的线程安全问题? 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读/写完,其他线程才可使用.不会出现数据不一致或者数据 ...
- JS 九九运算表
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- hibernate增删改查总结
hibernate操作的都是基于对象的(曾save删delete改update) 进行hql查询是设置参数从零开始(session.setParameter(0,#)) hql查询设置参数可以是其他( ...