【java学习—十三】随机存取流(6)


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

转换流

    InputSteamReaderOutputStreamWriter

对象流 ObjectInputStream 和 ObjectOutputStream (难点)

    序列化反序列化

随机存取流 RandomAccessFile

    掌握读取写入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cpdr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值