java 随机读写访问流及seek方法

package stream;

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

import org.junit.jupiter.api.Test;

/*
 * RandomAccessTile:随机读写访问流
 *     既可以是输入流,也可以是输出流
 *     r|w|d|s:读|写|更新数据|元数据更新
 *
 *     w:是对开头对文件内容进行覆盖
 *
 * */

public class RandomAccessFileTest {

    @Test
    public void test1(){

        RandomAccessFile raf1 = null;
        RandomAccessFile raf2 = null;
        try {
            //1.流对象
            raf1 = new RandomAccessFile(new File("hello.txt"),"r");
            raf2 = new RandomAccessFile(new File("hello2.txt"),"rw");

            //2.读写
            byte[]     buffer = new byte[1024];
            int len;
            while((len = raf1.read(buffer))!=-1) {
                raf2.write(buffer,0,len);
            }
        } catch (Exception e) {

            e.printStackTrace();
        }
        finally {
            try {
                if(raf1!=null)
                    raf1.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                if(raf2!=null)
                    raf2.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    /*
     * seek随机访问|插入方法
     *
     * */
    @Test
    public void test2() throws IOException {
        RandomAccessFile raf1 = new RandomAccessFile("hello.txt", "rw");
        /*raf1.seek(3);
        raf1.write("abc".getBytes());
    */
        /*
         * 使用StringBuilder
         * */
        StringBuilder sb = new StringBuilder((int)(new File("hello.txt").length()));
        raf1.seek(3L);
        int len;
        byte[] buffer = new byte[20];
        while((len = raf1.read(buffer))!=-1) {
            sb.append(new String(buffer,0,len));
        }

        raf1.seek(3L);
        raf1.write("xyz".getBytes());
        raf1.write(sb.toString().getBytes());
        raf1.close();
    }

}

原文地址:https://www.cnblogs.com/zsben991126/p/11881233.html

时间: 2024-11-08 08:39:00

java 随机读写访问流及seek方法的相关文章

JAVA IO 随机文件访问流

原文地址:https://www.cnblogs.com/superxuezhazha/p/12344076.html

Java内存理解 && 反射访问私有属性或方法

理解了内存,就理解了一切,就理解了各种各样的语言.所有的语言无非都是这样:局部变量分配内存永远在栈里面,new出来的东西分配内存永远是在堆里,静态的东西分配内存永远是在数据区.剩下的代码肯定是在代码区.所有的语言都是这样. 对于在API文档里面找某个类,如果一个类不用引入包就可以直接使用,那么这个类肯定是在java.lang这个包里. 接口是抽象方法(public)和常量值(public static final)的集合. 抽象类一定要有abstract关键字. Java反射之访问私有属性或方法

Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)

1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出流写入稍后由数据输入流读取的数据. · DataOutputStream:数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中.然后,应用程序可以使用数据输入流将数据读入. package datastreamdemos; import java.io.*; /** * Created b

Java基础知识强化之IO流笔记63:随机访问流RandomAccessFile

1. 随机访问流RandomAccessFile RandomAccessFile类不属于流,是Object类的子类.但它融合了InputStream和OutputStream的功能.支持对随机访问文件的读取和写入. RandomAccessFile的构造方法: 构造方法摘要 RandomAccessFile(File file, String mode)           创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定. RandomAccessFile(St

Java的IO流之文件随机读写

Java.io 包提供了 RandomAccessFile 类用于随机文件的创建和访问.使用这个类,可以跳转到文件的任意位置读写数据.程序可以在随机文件中插入数据,而不会破坏该文件的其他数据.此外,程序也可以更新或删除先前存储的数据,而不用重写整个文件. RandomAccessFile 类的两个构造方法: mode 表示所创建的随机读写文件的操作状态: r:表示以只读方式打开文件. rw:表示以读写方式打开文件,使用该模式只用一个对象即可同时实现读写操作 下面我们来模拟下系统日志,将数据写入到

java 21 - 12 随机访问流(不属于IO流)

随机访问流: RandomAccessFile类不属于流,是Object类的子类. 但它融合了InputStream和OutputStream的功能. 支持对文件的随机访问读取和写入. public RandomAccessFile(String name,String mode):第一个参数是文件路径,第二个参数是操作文件的模 mode:参数指定用以打开文件的访问模式.允许的值及其含意为: 值 含意 "r" 以只读方式打开.调用结果对象的任何 write 方法都将导致抛出 IOExc

Java知多少(72)文件的随机读写

Java.io 包提供了 RandomAccessFile 类用于随机文件的创建和访问.使用这个类,可以跳转到文件的任意位置读写数据.程序可以在随机文件中插入数据,而不会破坏该文件的其他数据.此外,程序也可以更新或删除先前存储的数据,而不用重写整个文件. RandomAccessFile类是Object类的直接子类,包含两个主要的构造方法用来创 建RandomAccessFile 的对象,如表 10-11 所示. 表 10-11 RandomAccessFile 类的构造方法 构造方法 功能描述

详解 随机访问流

(请观看本人博文--<详解 I/O流>) RandomAccessFile 类 (随机访问流) 概述: RandomAccessFile 类 的实例支持对随机访问文件的读取和写入. 随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组. 存在指向该隐含数组的光标或索引,称为文件指针: 输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针.如果随机访问文件以读取/写入模式创建,则输出操作也可用: 输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针.写入隐

Java 核心编程——文件随机读写类(RandomAccessFile)

1.RandomAccessFile RandomAccessFile主要用于文件内容的读写访问 2.访问模式 "r":只读方式. "rw":打开以便读取和访问,如果文件不存在则创建文件. "rws": 除了'rw'功能以外,文件内容或者元数据更新时一同写入. "rwd":除了'rw'功能以外,文件内容更新时一同写入. 3.使用案例 package test; import java.io.File; import java.