编程语言
首页 > 编程语言> > Java-IO流系列-随机存取文件流

Java-IO流系列-随机存取文件流

作者:互联网

随机存取文件流

简介

构造器

创建RandomAccessFile类实例需要指定一个mode参数,该参数指定RandomAccessFile的访问模式:

如果模式为只读r。则不会创建文件,而是会去读取一个已经存在的文件,如果读取的文件不存在则会出现异常。 如果模式为w读写。如果文件不存在则会去创建文件,如果存在则不会创建。

样例

复制文件

package com.dreamcold.io;

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

public class Demo20 {
    public static void main(String[] args) throws IOException {
        RandomAccessFile raf1= new RandomAccessFile(new File("image.jpg"),"r");
        RandomAccessFile raf2= new RandomAccessFile(new File("image4.jpg"),"rw");
        byte[] buffer=new byte[1024];
        int len;
        while((len=raf1.read(buffer))!=-1){
            raf2.write(buffer,0,len);
        }
        raf1.close();
        raf2.close();
    }
}

效果:

image-20210119165133196

写入txt文件

如果RandomaccessFile作为输出流时,写出到的文件如果不存在,则在执行过程中自动创建
如果写出到的文件存在,则会对原有文件内容进行覆盖。|

package com.dreamcold.io;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class Demo21 {
    public static void main(String[] args) throws IOException {
        RandomAccessFile raf1=new RandomAccessFile("hello1.txt","rw");
        raf1.write("dreamcold".getBytes());
        raf1.close();
        
    }
}

效果:

image-20210119165436966

数据插入的效果

可以通过相关的操作,实现RandomAccessFile"插入重据的效果

package com.dreamcold.io;

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

public class Demo22 {
    public static void main(String[] args) throws IOException {
        RandomAccessFile raf1=new RandomAccessFile("hello1.txt","rw");
        //将指针调到角标为3的位置
        raf1.seek(3);
        //保存指针3之后的所有的数据到StringBuilder中
        StringBuilder builder=new StringBuilder();
        byte[] buffer=new byte[20];
        int len;
        while ((len=raf1.read(buffer))!=-1){
            builder.append(new String(buffer,0,len));
        }
        //调回指针写入"xyz"
        raf1.seek(3);
        raf1.write("xyz".getBytes());
        //将StringBuiler中的数据写入文件
        raf1.write(builder.toString().getBytes());
        raf1.close();
    }
}

结果:

image-20210119170542862

标签:文件,Java,随机存取,IO,RandomAccessFile,io,new,java,raf1
来源: https://www.cnblogs.com/mengxiaoleng/p/14940271.html