上一节我们说到通过File访问文件,但是我们访问文件的最终目的都是访问文件中的内容,那么这个时候我们就需要使用到的一个类就是:RandomAccessFile。

此类的定义如下:

public class RandomAccessFile extends Object

  implements DataOutput,DataInput,Closeable

 

  此类的实例支持对随机访问文件的读取和写入。该操作方法通过一种文件指针的方式表示当前访问的位置,可以通过seek方法重置。需要注意的是流操作在结束之后都需要关闭。

构造方法:

RandomAccessFile(File file,String mode):创建从中读取和向其中写入(可选)的随机访问文件流

RandomAccessFile(String name,String mode):创建从中读取和向其中写入(可选)的随机访问文件流

mode参数指定访问模式,包括:

“r”:以只读方式打开

“rw”:打开以便读取和写入,如果该文件不存在,则会尝试创建该文件

“rws”:打开以便读取和写入,还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备

“rwd”:打开以便读取和写入,还要求对文件内容的每个更新都同步写入到底层存储设备

主要操作方法:

1. void close 关闭随机访问文件流并释放与该流关联的所有系统资源
2. long getFilePointer() 返回此文件中的当前偏移量 
3. long length() 返回此文件的长度 
4. int read()  从此文件读取一个字节
5. int read(byte[] b,int off,int len) 将最多len个数据字节从此文件读入byte数组 
6. boolean readBoolean() 从此文件读取一个boolean 
7. byte readByte() 从此文件读取一个有符号的八位值 
8. char readChar() 从此文件读取一个字符 
9. double readDouble() 从此文件读取一个double 
10. float readFolat() 从此文件读取一个float 
11. void readFully(byte[] b) 将b.length个字节从此文件读入byte数组,并从当前文件指针开始 
12. void readFully(byte[] b,int off,int len)  将正好len哥字节从此文件读入byte数组,并从当前文件指针开始
13. int readInt() 从此文件读取一个有符号的32位证书 
14. String readLine() 从此文件读取文本的下一行 
15. long readLong() 从此文件读取一个有符号的64位整数 
16. short readShort() 从此文件读取一个有符号的16位数 
17. void seek(long pos) 设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作 
18.  int skipBytes(int n) 尝试跳过输入的n个字节以丢弃跳过的字节 
19. void write(byte[] b) 将b.length个字节从指定byte数组写入到此文件并从当前文件指针开始
20. void write(byte[] b,int off,int len) 将len个字节从指定byte数组写入到此文件,并从偏移量off处开始
21. void write(int b) 想此文件写入指定的字节
22. void writeBoolean(boolean v) 按单字节值将boolean写入该文件
23. void writeByte(int v) 按单字节值将byte写入该文件
24. void wirteBytes(String s) 按字节序列将该字符串写入该文件
25. void writeChar(int v) 按双子姐将char写入该文件,先写高字节
26. void writeChars(String s) 按字符序列将一个字符串写入该文件
27. void writeDouble(double v)

使用Double类的doubleToLongBits方法将双精度参数转换为一个long,然后按八字节数量将该long值写入该文件,先写高字节

28. void writeFloat(float v) 使用Float类的floatToIntBits方法将浮点参数转换为一个int,然后按四字节数量将该int值写入该文件先写高字节
29. void writeInt(int v) 按四个字节将int写入该文件,先写入高字节
30. void writeLong(long v) 按八个字节将short写入该文件,先写入高字节
31. void writeShort(int v) 按两个字节将short写入该文件,先写入高字节
32 void writeUTF(String str) 使用UTF-8编码以与机器无关的方式将一个字符串写入文件

实例:

实例:

package com.fuwh.raf;

import java.io.RandomAccessFile;

public class RadomAccessFileWrite {

    public static void main(String[] args) throws Exception {
//实现对classpaths下的文件raf.txt实现写入
String name="zhangsan";
int age=12;
float salary=5500.15f;
String dept="Java开发"; RandomAccessFile raf=new RandomAccessFile("raf.txt","rw");
raf.writeBytes(name);
raf.writeInt(age);
raf.writeFloat(salary);
raf.write(dept.getBytes());
raf.close(); RandomAccessFile raf2=new RandomAccessFile("raf.txt","r");
byte[] b=new byte[8];
raf2.read(b);
System.out.println(new String(b));
System.out.println(raf2.readInt());
System.out.println(raf2.readFloat());
byte[] c=new byte[8];
for(int i=0;i<8;i++){
c[i]=raf2.readByte();
}
System.out.println(new String(c));
raf2.close();
}
}

通过这个实例,明显可以感觉到,这样的操作非常的不灵活,因此我们就需要使用到java.io包中的其他一些列io操作类

Java IO(二)的更多相关文章

  1. 图解 Java IO : 二、FilenameFilter源码

    Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆         瓣:BYSocket FaceBook:BYSocket Twitter   ...

  2. Java IO(二)

    字节流 字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream B ...

  3. java IO(二):字节流

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  4. Java IO(二) 之 InputStream

    源代码均以JDK1.8作为參考 前言: InputStream实现了两个接口Closeable和AutoCloseable: Closeable:JDK1.5中引入,Closeable接口中仅仅有一个 ...

  5. 系统学习 Java IO (二)----IO 异常处理

    目录:系统学习 Java IO---- 目录,概览 我们使用流后,需要正确关闭 Streams 和 Readers / Writers . 这是通过调用 close() 方法完成的,看看下面这段代码: ...

  6. Java IO(二)--RandomAccessFile基本使用

    RandomAccessFile: 翻译过来就是任意修改文件,可以从文件的任意位置进行修改,迅雷的下载就是通过多个线程同时读取下载文件.例如,把一个文件分为四 部分,四个线程同时下载,最后进行内容拼接 ...

  7. 系统学习 Java IO ---- 目录,概览

    Java IO 类的系统教程,原创.主要参考自英文教程 Java IO Tutorial 和 Java Doc. http://tutorials.jenkov.com/java-io/index.h ...

  8. Java IO详解(二)------流的分类

    一.根据流向分为输入流和输出流: 注意输入流和输出流是相对于程序而言的. 输出:把程序(内存)中的内容输出到磁盘.光盘等存储设备中      输入:读取外部数据(磁盘.光盘等存储设备的数据)到程序(内 ...

  9. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  10. Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

    第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...

随机推荐

  1. Java基础学习笔记三 Java基础语法

    Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...

  2. windows环境下,apache虚拟主机配置

    在windows环境下,apache从配置文件的相关配置: Windows 是市场占有率最高的 PC 操作系统, 也是很多人的开发环境. 其 VirtualHost 配置方法与 Linux 上有些差异 ...

  3. C语言第五次作业--数据类型

    7-2 区位码输入法: 1. 本题PTA提交列表: 2.设计思路: 1.simple定义输入数,character1和character2分别定义低字节和高字节区位码,digit存储取余后的数,sum ...

  4. Scrum 冲刺 总结

    Scrum 冲刺 总结 冲刺阶段链接 Scrum冲刺第一天 Scrum冲刺第二天 Scrum冲刺第三天 Scrum冲刺第四天 Scrum冲刺第五天 Scrum冲刺第六天 Scrum冲刺第七天 冲刺阶段 ...

  5. 视图和URL配置

    视图和URL配置 实验简介 上一章里我们介绍了如何创建一个Django项目并启动Django的开发服务器.本章你将学到用Django创建动态网页的基本知识. 同时,也教会大家怎么在本地机器上建立一个独 ...

  6. logging日志

    import logging logging.basicConfig(filename='log.log', format='%(asctime)s - %(name)s - %(levelname) ...

  7. 2017 国庆湖南 Day6

    期望得分:100+100+60=260 实际得分:100+85+0=185 二分最后一条相交线段的位置 #include<cstdio> #include<iostream> ...

  8. 第三篇:Python字符编码

    一 .了解字符编码的知识储备 1计算机基础知识 1.2文本编辑器存取文件的原理(nodepat++,Pycharm,word) #.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的 ...

  9. 06-移动端开发教程-fullpage框架

    CSS3的新特性已经讲完了,接下来我们看一下jQuery的一个全屏jQuery全屏滚动插件fullPage.js.我们经常见到一些全屏的特绚丽页面,手指或者鼠标滑动一下就是一整屏切换,而且还有各种效果 ...

  10. vue组件详解(三)——组件通信

    组件之间通信可以用下图表示: 组件关系可分为父子组件通信.兄弟组件通信.跨级组件通信. 一.自定义事件 当子组件需要向父组件传递数据时,就要用到自定义事件. 子组件用$emit ()来触发事件,父组件 ...