1. RandomAccessFile类
RandomAccessFile 类支持 “随机访问” 的方式,程序可以直接跳到文件的任意地方来读、写文件。
①支持只访问文件的部分内容
②可以向已存在的文件后追加内容
RandomAccessFile 对象包含一个记录指针,用以标示当前读写处的位置。
RandomAccessFile 类对象可以自由移动记录指针:
long getFilePointer() :获取文件记录指针的当前位置
void seek(longpos) :将文件记录指针定位到 pos 位置
2. 举例
2.1. 随机读取
tt10.txt文件的内容如下:
随机读取tt10.txt里面的内容。
package day13;
import java.io.RandomAccessFile;
/**
* 文件的随机读写
* 程序可以直接跳到文件的任意地方来读、写文件内容
* @author 14532
*
*/
public class Test6 {
public static void main(String[] args) {
try {
Test6.testRandomAccessFileRead();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void testRandomAccessFileRead() throws Exception{
//RansAccessFile的构造有两个参数,参数1是读写的文件路径
//参数2是指定RandomAccessFile的访问模式
//r: 以只读方式打开
//rw :打开以便读取和写入
//rwd: 打开以便读取和写入;同步文件内容的更新
//rws: 打开以便读取和写入;同步文件内容和元数据的更新
//最常用的是r和rw
RandomAccessFile ra = new RandomAccessFile("D:/java_doc/eclipse-workspace/demo/src/day13/tt10.txt","r");
// ra.seek(0);//设置读取文件内容的起始点
ra.seek(8);//通过设置读取文件内容的起始点,来达到从文件的任意位置读取
byte[] b = new byte[1024];
int len = 0;
while((len = ra.read(b)) != -1) {
System.out.println(new String(b, 0, len));
}
ra.close();
}
}
运行结果:
2.2. 随机写
tt10.txt文件的内容如下:
随机写tt10.txt里面的内容。
package day13;
import java.io.RandomAccessFile;
/**
* 文件的随机读写
* 程序可以直接跳到文件的任意地方来读、写文件内容
* @author 14532
*
*/
public class Test6 {
public static void main(String[] args) {
try {
Test6.testRandomAccessFileWrite();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 随机写
* @throws Exception
*/
public static void testRandomAccessFileWrite() throws Exception{
RandomAccessFile ra = new RandomAccessFile("D:/java_doc/eclipse-workspace/demo/src/day13/tt10.txt","rw");
ra.seek(0);//设置写的起始点,0代表从开头写
//注意:如果是在文件开头或者中间的某个位置开始写的话,就会用写的内容覆盖掉等长的原内容
// ra.seek(ra.length());//设置写的起始点,ra.length()代表从文件的最后结尾写,也就是文件的追加
ra.write("你好".getBytes());
ra.close();
}
}
运行结果,tt10.txt内容:
3. 流的基本应用小节
流是用来处理数据的
处理数据时,一定要先明确数据源,与数据目的地
数据源
可以是文件,可以是键盘。
数据目
的地可以是文件、显示器或者其他设备。
而流
只是在帮助数据进行传输 , 并对传输的数据进行处理,比如过滤处理、转换处理等。
字节流 - 缓冲流(重点)
输入流 InputStream
-FileInputStream
-BufferedInputStream
输出流 OutputStream
-FileOutputStream
-BufferedOutputStream
字符流 - 缓冲流(重点)
输入流 Reader
-FileReader
-BufferedReader
输出流 Writer
-FileWriter
-BufferedWriter
转换流
InputSteamReader
和 OutputStreamWriter
对象流 ObjectInputStream 和 ObjectOutputStream (难点)
序列化
和反序列化
随机存取流 RandomAccessFile
掌握读取和写入