Java的RandomAccessFile对文件内容进行读写

 RandomAccessFile是Java提供的对文件内容的访问,她既可以读文件,也可以写文件,并且RandomAccessFile支持随机访问文件,也就是说他可以指定位置进行访问。

  我们知道Java的文件模型,文件硬盘上的文件是byte byte byte的字节进行存储的,是数据的集合。下面就是用这个类的步骤。

(1)打开指定的文件,有两种模式“rw”(读写) “r”(只读),创建对象,并且指定file和模式,例如:

      RandomAccessFile ac=new RandomAccessFile(file,”rw”);

 因为它支持随机访问文件,所以他引入了指针,可以通过指针来写入写出在指定的位置。文件指针,打开文件时指针在开头pointer=0

(2)RandomAccessFile的往文件中写的方法(还有其他的写方法)

  Ac.write(int)----->只能写一个字节(后八位),同时文件指针也会移动,指向下一个位置。

(3)RandomAccessFile读的方法(还有其他的读方法)

  int b=ac.read()--->读一个字节

(4)文件读写完毕后必须要把他关闭,调用close()的方法。下面就是例子:

//创建相对路径的文件,就是在这个项目中创建一个文件夹
        File file=new File("random");
        if(!file.exists()) {
            file.mkdir();
        }
        File fileName=new File(file,"javaio.txt");
        if(!fileName.exists()) {
            fileName.createNewFile();//创建文件
        }
        //创建一个RandomAccessFile的对象,并指定模式rw,能读能写,
        //注意:必须是文件,不能是路径
        RandomAccessFile raf=new RandomAccessFile(fileName,"rw");
        //获取此时的文件指针的位置,起始位置为0
        System.out.println(raf.getFilePointer());
        //向文件中写入字符A,字符类型有两个字节,但她写入的是后八位的字节
        //字符A正好可以用后八位的字节表示出来
        raf.write(‘A‘);
        //字符的位置会自动向后移动,文件指针会向后自动移动
        System.out.println("输入一个字符之后,文件指针的位置"+raf.getFilePointer());
        raf.write(‘B‘);

        //每次write只能写入一个字节,如果要把i写进去,就需要写四次
        int i=0x7fffffff;
        raf.write(i>>>24 & 0xff);//写入高八位的
        raf.write(i>>>16 & 0xff);
        raf.write(i>>>8   & 0xff);
        raf.write(i);//写入低八位
        System.out.println("写入整数的时候文件指针的位置是"+raf.getFilePointer());

        /**
         * writeInt()的内置方法
         *  public final void writeInt(int v) throws IOException {
        write((v >>> 24) & 0xFF);
        write((v >>> 16) & 0xFF);
        write((v >>>  8) & 0xFF);
        write((v >>>  0) & 0xFF);
        //written += 4;
    }
         */

        //也可以直接写入int整数
        raf.writeInt(i);

        //写入一个汉字,汉字为两个字节
        String str="欢迎学习java";
        byte[] b=str.getBytes("gbk");
        raf.write(b);
        System.out.println("此时的长度为"+raf.length());

        //读文件必须将文件指针放在开头位置
        raf.seek(0);
        byte[] buf=new byte[(int)raf.length()];
        raf.read(buf);//将内容写入buf字节数组中

        String  str1=new String(buf,"gbk");
        System.out.println("文件中的内容为"+str1);
        raf.close();
时间: 2024-10-12 22:04:24

Java的RandomAccessFile对文件内容进行读写的相关文章

五种方式让你在java中读取properties文件内容不再是难题

一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC+Mybatis整合开发的项目中通过java程序读取properties文件内容的方式进行了梳理和分析,先和大家共享. 二.项目环境介绍 Spring 4.2.6.RELEASE SpringMvc 4.2.6.RELEASE Mybatis 3.2.8 Maven 3.3.9 Jdk 1.7 Id

7 RandomAccessFile读取文件内容保存--简单例子(需要验证)

1 import org.slf4j.Logger; 2 import org.slf4j.LoggerFactory; 3 4 import java.io.*; 5 6 /** 7 * 读取动态产生的文件内容 8 */ 9 public class RandomAccessRead { 10 public static Logger logger= LoggerFactory.getLogger(RandomAccessRead.class); 11 12 //文件默认读取位置为从开始读取

java Io流更新文件内容

package com.hp.io; import java.io.FileOutputStream; import java.io.IOException; public class FileOutputStreamTest{ public static void main(String []args){ FileOutputStream fos=null;    //文件输出流 try{ String str="java从入门到放弃"; byte [] words =str.get

java 使用Reader和Writer对文件内容的拷贝

package com.hc.fileio; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; /**对文件内容的拷贝 * @author MaskedMen *Reader和Writer只能读写字符流 */ public class ReaderWr

Java.io.RandomAccessFile

RandomAccessFile Java提供的对文件内容的访问,既可以读文件,也可以写文件.支持随机访问文件,可以访问文件的任意位置. 1)Java文件模型 在硬盘上的文件是byte byte byte存储的,是数据的集合. 2)打开文件 有两种模式 rw 读写  r 只读. RandomAccessFile randomAccessFile=new RandomAccessFile(file, "rw"); 文件指针,打开文件时指针在开头 pointer=0. 3)写方法 rand

Java追加文件内容的三种方法

import <a href="http://lib.csdn.net/base/17" class='replace_word' title="Java EE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream;

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

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

(IO流)java中多种方式读文件,追加文件内容,对文件的各种操作

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.RandomAccessFile; import java.io.R

类 RandomAccessFile 在文件任意位置进行读写

public class RandomAccessFile extends Object implements DataOutput, DataInput, Closeable 此类同时实现了DataOutput和DataInput接口,此类的实例支持对随机访问文件的读取和写入.随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组.存在指向该隐含数组的光标或索引,称为文件指针:输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针.如果随机访问文件以读取/写入模式创建,则