Java中的文件操作(一)RandomAccessFile

      今天,学到的是java中的文件操作。

      Java.IO.File

     Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是RandomAccessFile支持“随机访问”的方式,即程序可以跳转到文件的任意地方来读写数据。

    局限:只能读写文件,不能读写其他IO节点

   了解

   (1)Java文件模型

        在硬盘上是byte byte byte 储存的,是 数据的集合

   (2)打开文件

     两种常用模式“rw”读写方式 “r”读

   

  (3)写方法

    Raf.write(int a)

  (4)读方法

   (5)用完之后要关闭

       演示例子:

package com.my_demo;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;

public class RafDemo {

	

	public static void main(String[] args) throws IOException{
		File demo = new File("demo"); // 创建一个文件
		if(!demo.exists())//如果文件不存在,创建到绝对目录下
			
		{
			demo.mkdirs();//这是个父目录
		} 
		File file = new File(demo, "dat.txt");
        if(!file.exists()){
        	file.createNewFile();//在demo目录下创建了文件
        }
        
      //  RandomAccessFile raf = new RandomAccessFile(file, "rw");
        RandomAccessFile raf = new RandomAccessFile("dat.txt", "rw");//读写方式
        //看一下初始时的指针位置
          System.out.println(raf.getFilePointer());
        
        //往里写一个字节后看看指针的位置
           raf.write('c'); //写了一个字节,它的后八位
           //看一下此时的指针位置
           System.out.println(raf.getFilePointer()); 
          /**
           * 用writechar()方法时会写入两个字节
           */
//           raf.writeChar('c');
           
           //写入一个int
           int i = 0x7fffffff;//最大的整型
           raf.write(i>>>24);//写进去高八位
           raf.write(i>>>16);
           raf.write(i>>>8);
           raf.write(i); //Java底层的运行机制
         //看一下此时的指针位置
           System.out.println(raf.getFilePointer());
           
           String s ="中";
           byte[] gbk = s.getBytes("gbk");
           raf.write(gbk);
           System.out.println(raf.length());
           
           
          //读文件,必须把指针移到头部
           raf.seek(0);
           //一次性读取,把文件中的内容都读写到字节数组中
           byte[] buf = new byte[(int)raf.length()];
           raf.read(buf);
           
           System.out.println(Arrays.toString(buf));
           //最后必须关闭
           raf.close();
	}
	
       
}

                                                                                                                                不足之处望指正,新手请多关照

posted @ 2016-10-27 16:07  无语的风  阅读(5485)  评论(0编辑  收藏  举报