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

File RandomAccessFile读写

时间:2015-10-22 14:09:53      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

  1 package com.javaio.study;
  2 
  3 import java.io.File;
  4 import java.io.FileNotFoundException;
  5 import java.io.IOException;
  6 import java.io.RandomAccessFile;
  7 import java.util.Arrays;
  8 
  9 /**
 10  * 使用RandomAccessFile对文件进行读写操作
 11  * @author chen
 12  *
 13  */
 14 public class Raf {
 15 
 16     /**
 17      * 创建新文件
 18      * @return
 19      * @throws IOException
 20      */
 21     private File createFile() throws IOException{
 22         
 23         File file = null;
 24         File demo = new File("demo");
 25         if(!demo.exists()){
 26             demo.mkdir();
 27         }
 28         file = new File(demo, "raf.dat");
 29         if(!file.exists()){
 30             file.createNewFile();
 31         }
 32         return file;
 33         
 34     }
 35     
 36     /**
 37      * 使用RandomAccessFile写文件
 38      * @param file
 39      * @throws IOException 
 40      */
 41     private void rafWrite(File file) throws IOException{
 42         
 43         if(file != null && file.exists()){
 44             
 45             RandomAccessFile raf = new RandomAccessFile(file, "rw");//以读写的方式打开文件
 46             //指针的文职
 47             System.out.println(raf.getFilePointer());
 48             raf.write(‘A‘);//只写了一个字节
 49             System.out.println(raf.getFilePointer());
 50             raf.write(‘B‘);
 51             System.out.println(raf.getFilePointer());
 52             
 53             int i = 0x7fffffff;
 54             //用write方法每次只写一个字节,如果要把i写进去就要写4次
 55             raf.write(i >>> 24);//高8位
 56             raf.write(i >>> 16);
 57             raf.write(i >>> 8);
 58             raf.write(i);
 59             System.out.println(raf.getFilePointer());
 60             
 61             //可以直接写一个int
 62             raf.writeInt(i);
 63             
 64             String s = "中";
 65             byte[] gbk = s.getBytes("UTF-8");
 66             raf.write(gbk);
 67             System.out.println(raf.length());
 68             
 69             raf.close();//关闭
 70         }
 71         
 72     }
 73     
 74     /**
 75      * 使用RandomAccessFile读文件
 76      * @param file
 77      * @throws IOException 
 78      */
 79     private void rafReader(File file) throws IOException{
 80         
 81         if(file != null && file.exists()){
 82             
 83             RandomAccessFile raf = new RandomAccessFile(file, "rw");//以读写的方式打开文件
 84             //读文件,必须把指针移到头部
 85             raf.seek(0);
 86             //一次性读取,把文件中的内容都读到字节数组中
 87             byte[] buf = new byte[(int)raf.length()];
 88             raf.read(buf);
 89             System.out.println(Arrays.toString(buf));
 90             
 91             String s = new String(buf, "UTF-8");
 92             System.out.println(s);
 93             
 94             for(byte b: buf){
 95                 System.out.print(Integer.toHexString(b & 0xff) + " ");
 96             }
 97             
 98             raf.close();//关闭
 99         }
100         
101     }
102     
103     public static void main(String[] args) throws IOException {
104         
105         Raf raf = new Raf();
106         File file = raf.createFile();
107         raf.rafWrite(file);
108         raf.rafReader(file);
109         
110     }
111     
112 }

 参考:慕课网(http://www.imooc.com)

File RandomAccessFile读写

标签:

原文地址:http://www.cnblogs.com/jinjiyese/p/4900479.html

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