RandomAccessFile类&读写②

本文详细介绍了Java中的RandomAccessFile类,包括如何进行读写操作。在写操作中,涉及write()方法的不同用法,如写一个字节、写整个字节数组以及指定偏移量和长度的写入。在读操作中,讲解了read()方法用于读取单个字节以及read()方法用于读取字节数组,并讨论了读到文件末尾的情况及其标识EOF。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RandomAccessFile
读写操作

写:

void write(int d):写一个字节,写的是读取int的低8位

void write(byte[] b):写若干字节,写出的字节量就是给定的数组的长度.换句话说,就是将数组中所有字节都写出

void write(byte[] b,int offset,int len):将数组中从iffset连续开始写入len个字节
例如 raf.write(byte,5,5);

void write(byte[] b,int offset,int len)

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

public class RandomAccessFileDemo {

	public static void main(String[] args) throws IOException {
		File file=new File("buf.dat");
		if(!file.exists()){file.createNewFile();}
		RandomAccessFile raf=new RandomAccessFile(file,"rw");
		//创建一个字节数组,该数组中的内容是要写出的数据
		byte[] data={0,1,2,3,4,5,6,7,8,9};
		raf.write(data);//将字节数组内容全部写出
		//只写该数组中的1-5
		raf.write(data,1,5);
		raf.close();
	}

}

读:

int read():一次读取一个字节,并以int形式返回. 该int值只有低8位有效. 若返回值位-1,说明读取到了文件末尾.
EOF:文件末尾 end of file

int read(byte[] b):尝试读取给定的字节数组长度的字节并存入数组,返回实际读取的字节数

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;

public class RandomAccessFileDemo02 {

	public static void main(String[] args) throws IOException {
		File file=new File("buf.dat");
		RandomAccessFile raf=new RandomAccessFile(file,"rw");
		
		//读取文件所有字节并输出
		int d=-1;
		/**
		 * 读取一个字节,若返回值是-1,则到了末尾
		 */
		while((d=raf.read())!=-1){
			System.out.println(d+"");
		}
		/**
		 * 批量读取数据
		 */
		raf.seek(0);
		//创建一个可以保存30个字节的数组
		byte[] buf=new byte[30];
		System.out.println("实际读取的字节数"+raf.read(buf));//15
		System.out.println(Arrays.toString(buf));//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
		byte[] buff=new byte[15];
		System.arraycopy(buf, 0, buff, 0, 15);
		System.out.println(Arrays.toString(buff));//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5]
		
		raf.close();
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值