美文网首页程序员
RandomAccessFile读写文件

RandomAccessFile读写文件

作者: 大侠陈 | 来源:发表于2018-10-18 11:37 被阅读20次

RandomAccessFile同时具备读写文件的能力

读取文件内容

对于读取整个文件内容的需求,它提供将文件内容读取到字节数组的方法

    private static String readString( Stringpath ) {
        try{
            File file = new File(path);
            RandomAccessFile raf = newRandomAccessFile(file,"rw");
            byte[] bytes = newbyte[(int)file.length()];
            raf.read(bytes);
            raf.close();
            String str = new String(bytes);
            return str;
        }catch (IOException e) {
            return "";
        }
    }
 
        final String path ="C:\\Users\\admin\\Desktop\\text.txt";
        String content = readString(path);
        System.out.println( content );

注意:如果文件编码不是utf-8,则会读到乱码

写入文件内容

将内容通过RandomAccessFile写入文件实现起来比较麻烦, RandomAccessFile提供的写文件内容方法支持在已有文件内容的某个点插入新内容,而写文件的大多数需求是用新的内容覆盖掉旧的内容,RandomAccessFile却没有提供清空旧文件内容的方法。 所以要实现此功能我们必须使用FileChannel, FileChannel的truncate方法可以清空文件内容。

    private static void writeString( Stringpath, String content) {
        try{
            byte[] bytes = content.getBytes();
            File file = new File(path);
            RandomAccessFile raf = newRandomAccessFile(file,"rw");
            FileChannel fileChannel =raf.getChannel();
            fileChannel.truncate(0);
            ByteBuffer byteBuffer =ByteBuffer.wrap(bytes);
            fileChannel.write(byteBuffer);
            fileChannel.close();
            raf.close();
        }catch (IOException e) {
        }
    }
        final String path ="C:\\Users\\admin\\Desktop\\text.txt";
        writeString(path,"content");

以上代码的实现步骤是

  1. 从RandomAccessFile获得FileChannel
  2. 调用FileChannel的truncate方法清空文件,truncate接口一个数值参数, 此参数是一个位置值, 表示在文件内容中,此位置后面的内容将被删除,因此, 传递0就表示位置0后面的内容被删除,也就是整个文件中的内容被删除
  3. 利用ByteBuffer往FileChannel中写入内容

使用标准的方式读写文件

使用RandomAccessFile读写文件显得非常繁琐。 事实,jdk中已经包含了专门实现读写文件功能的类库,如 FileReader 和 FileWriter

FileReader读取文件内容

    private static StringreadStringByReader(String path) {
        try {
            File file = new File(path);
            FileReader fileReader = newFileReader(file);
            char[] chars = newchar[(int)file.length()];
            fileReader.read(chars);
            fileReader.close();
            String str = new String(chars);
            return str;
        } catch (IOException e) {
            return "";
        }
    }
 

FileWriter写入文件内容

    private static voidwriteStringByWriter(String path , String content ) {
        try {
            File file = new File(path);
            FileWriter fileWriter = newFileWriter(file);
            fileWriter.write(content);
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } 

看, 使用专门的读写API实现读写文件的功能是不是方便很多, 不但使用方便, 而且可读性强。

相关文章

  • Java IO 小结

    RandomAccessFile文件访问类,可读写文件的任意位置RandomAccessFile raf = ne...

  • IO流

    1. 了解IO 2. 创建文件 3. 读写文件内容 RandomAccessFile类读写文件 ...

  • RandomAccessFile读写文件

    RandomAccessFile同时具备读写文件的能力 读取文件内容 对于读取整个文件内容的需求,它提供将文件内容...

  • Java IO中的其他读写流

    RandomAccessFile 构造方法 //var1 文件路径,var 文件的读写模式 "r"只读,"w"只...

  • java的file操作2

    1.java.io.RandomAccessFile:该类设计用来专门读写文件数据。其基于指针进行读写,即:总是在...

  • 2021-09-21 IO流(RandomAccessFile)

    RandomAccessFile 1.随机访问文件,自身具备读写方法2.通过skipBytes(int x),se...

  • ★15.I-O系统

    File 相关类 RandomAccessFile:独立的随机访问文件读写类。 示例:列出文件夹中的目录 Inpu...

  • JAVA的RandomAccessFile

    一、RandomAccessFile简介 RandomAccessFile既可以读取文件内容,也可以向文件输出数据...

  • 2018-06-08 第三十三天

    一、RandomAccessFile java.io.RandomAccessFile:随机存取文件。这个功能很强...

  • RandomAccessFile的读写

网友评论

    本文标题:RandomAccessFile读写文件

    本文链接:https://www.haomeiwen.com/subject/ucmjzftx.html