码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2015-09-01 21:27:09      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:

 RandomAccessFileJava提供的对文件内容的访问,她既可以读文件,也可以写文件,并且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();

 

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

标签:

原文地址:http://www.cnblogs.com/dukc/p/4776868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!