java当中randomAccessFile文件随机读取对象的简单使用

package Imooc_IO;

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

public class RafDemo {
//randomAccessFile文件随机读写类实例对象
	public static void main(String[] args) throws IOException {
		File demo=new File("demo");//为当前项目的默认路径
		if(!demo.exists())
		{
			demo.mkdirs();//当在当前目录下不存在向对应的文件目录时,则进行文件目录的创建操作
		}
		File file=new File(demo,"raf.dat");//在上述所创建的demo文件夹当中建立一个raf.dat文件
		if(!file.exists())
			file.createNewFile();//当指定路径的文件对象不存在时,则先进行文件对象的创建操作
		RandomAccessFile raf=new RandomAccessFile(file,"rw");//实例化一个属于file文件的读写文件实例化对象,文件随机读写对象对该
//文件即能够进行读操作也能够对该文件随机读写对象进行写操作
		System.out.println("文件指针所在的位置:"+raf.getFilePointer());//对文件随机读写对象当中的指针的位置进行输出操作
		raf.write('A');//通过文件随机读写对象来向指定的文件对象当中进行数据的写入操作
		System.out.println("对文件对象执行完写操作之后文件指针的位置为:"+raf.getFilePointer());
		raf.write('B');//此时输入的数据是以字节的方式进行存储的,所以文件指针在每添加一个新的数据元素之后指针将后移一个字节
		System.out.println("FilePointerLocation:"+raf.getFilePointer());
		raf.writeInt(1);//通过文件随机读写对象读入一个整形数字,一个整形变量占四个字节所以文件指针在原有的基础上向后移动四位
		System.out.println("FilePoniterLocation:"+raf.getFilePointer());
		String str="白";
		byte b[]=str.getBytes("utf8");//将一个字符串对象转化为一个字节数组进行存储
		raf.write(b);//将由字符串转化而成的字节数组存放到指定的文件对象当中去
		System.out.println("FilePointerLocation:"+raf.getFilePointer());//表明一个汉字占三个字节
		
//近行指定文件对象当中的内容的读取操作时,必须要将文件指针移动到文件的开始处
		raf.seek(0);//将文件指针移动到文件的开始处进行文件的读操作
		byte buf[]=new byte[(int)raf.length()];//开辟一个字节数组对象来对文件当中的数据信息进行读取操作
		raf.read(buf);//直接将文件当中的全部数据都读取到字节数组当中
//		raf.readInt();只能够进行一个字节内容的读取操作
		System.out.println("直接对字节数组当中的内容进行输出操作:"+Arrays.toString(buf));//将字节数组当中的内容转化为十进制数以数组
//的方式来进行输出操作
//		String s1=new String(buf);//将字节数组当中的内容转化为一个字符串对象来进行输出操作
//		System.out.println(s1);//因为没有设置字节数组转化为字符串的编码方式,所以会以默认的gbk编码方式进行编码进而出现乱码现象
		String s1=new String(buf,"utf8");
		System.out.println("将读取到的字节数组当中的内容以字符串的形式进行输出操作:"+s1);
		raf.close();//对随机读取文件对象的通道进行关闭操作
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值