RandomAccessFile文件操作

Java提供了一个可以对文件随机访问的操作,访问包括读和写操作。改类名为RandomAccessFile。该类的读写是基于指针的操作。

读写操作:

写数据
void write(int b)
void write(byte b[])
void writeBytes(byte b[], int off, int len)
向文件中写数据,如果此文件不存在,那么写数据的对象会帮你创建文件。

package randomAccess;

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

public class RandomAccessFileDemo {
    public static void main(String[] args) {
        writeByte();
        writeString();
        writeStingWithOffset();
    }

 

    public static void writeByte() {
        try {
            /**
             *  RandomAccessFile(String name, String mode)
             *  mode :r 只读 rw可读可写
             */
            RandomAccessFile accessFile=new RandomAccessFile( "asf1.txt","rw" );
            //向文件写入一个字节
            accessFile.write( 97 );
            accessFile.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void writeString() {
        try {
            /**
             *  RandomAccessFile(String name, String mode)
             *  mode :r 只读 rw可读可写
             */
            RandomAccessFile accessFile=new RandomAccessFile( "asf2.txt","rw" );
            //向文件写入一个字符串
            accessFile.write( "你喜欢Java不".getBytes());
            accessFile.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void writeStingWithOffset() {
        try {
            /**
             *  RandomAccessFile(String name, String mode)
             *  mode :r 只读 rw可读可写
             */
            RandomAccessFile accessFile=new RandomAccessFile( "asf3.txt","rw" );
            /**
             * 从指定下标开始写,写入多少个长度
             * write(byte b[], int off, int len)
             */
            accessFile.write( "hello".getBytes() ,1,3);
            accessFile.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


}


读数据
read()-int 一次读一个字节
read(byte[] b) -按照字节数组读取

package randomAccess;


import java.io.RandomAccessFile;

public class RandomAccessFileDemo2 {
    public static void main(String[] args) {
        read();
        readBytes();
    }

    /**
     * 一次读取一个字节
     */
    public static void read() {

        try {
            RandomAccessFile raf=new RandomAccessFile( "a.txt" ,"r");
            System.out.println((char)raf.read());
            raf.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void readBytes() {
        try {
            RandomAccessFile raf=new RandomAccessFile( "a.txt" ,"r");
            byte[] bytes=new byte[10];
            int len=raf.read(bytes);
            System.out.println("读取到的实际字节长度 "+len);
            System.out.println(new String( bytes ));
            raf.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


}

运行结果

a
读取到的实际字节长度 6
abc中
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容