上一节我们说到通过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. [日常] Codeforces Round #440 Div.2 大力翻车实况

    上次打了一发ABC然后大力翻车...上午考试又停电+Unrated令人非常滑稽...下午终于到了CF比赛... 赛前大力安利了一发然后拉了老白/ $ljm$ / $wcx$ 一起打, 然后搞了个 TI ...

  2. alpha-咸鱼冲刺day2

    一,合照 emmmmm.自然是没有的. 二,项目燃尽图 三,项目进展 今天并没有什么进展,弄了好久好像也只研究出怎么把JS的功能块插入进去.html的信息提交这些还不知道要怎么弄. 四,问题困难 日常 ...

  3. Ubuntu Desktop 16.04 LTS 下成功配置Jupyter的两个python内核版本(2.7x,3.5x)

    Ubuntu  Desktop 16.04 LTS 安装好系统默认就有python两个不同版本(2.7.12和3.5.2) 现在来熟悉一下jupyter的对python这两个不同python版本的内核 ...

  4. dede观看总结自己总结

    知识点一:{dede:arclist channelid="18" addfields="language,pfz" limit="0,5" ...

  5. SpringBoot项目如何进行打包部署

    springboot的打包方式有很多种.有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的.这里主要介绍如何打成jar进行部署.不推荐用war,因为spring ...

  6. hadoop2.6.0实践:A01 问题处理 DEPRECATED: Use of this script to execute hdfs command is deprecated.

    [hadoop@hadoop-master data]$ hadoop dfs -ls /DEPRECATED: Use of this script to execute hdfs command ...

  7. Linux后台运行命令 nohup command > myout.file 2>&1

    Linux命令后台运行 转自北国的雨,谢谢:http://www.cnblogs.com/lwm-1988/archive/2011/08/20/2147299.html 有两种方式:1. comma ...

  8. django关闭调试信息,打开内置错误视图

    1 内置错误视图 Django内置处理HTTP错误的视图,主要错误及视图包括: 404错误:page not found视图 500错误:server error视图 400错误:bad reques ...

  9. 记录项目中用的laypage分页代码

    最终才觉得,好记性不如烂笔头,毕竟已经不是刚毕业时候的巅峰了,精力有所下降,很多时候记不住东西. 参考url:http://www.layui.com/laypage/ 直接上代码了 <scri ...

  10. Tcl与Design Compiler (一)——前言

    已经学习DC的使用有一段时间了,在学习期间,参考了一些书,写了一些总结.我也不把总结藏着掖着了,记录在博客园里面,一方面是记录自己的学习记录,另一方面是分享给大家,希望大家能够得到帮助.参考的书籍有很 ...