迎风前行的小强

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

File --文件的读写操作
-------------------

 1. 通过数组实现对一组数据的写入

 1 package day01;
 2 
 3 import java.io.FileNotFoundException;
 4 import java.io.IOException;
 5 import java.io.RandomAccessFile;
 6 
 7 /**
 8  * 批量写入一组字节
 9  * @author Administrator
10  *
11  */
12 public class RandomAccessFileDemo4 {
13 
14     public static void main(String[] args) throws IOException {
15         
16         RandomAccessFile raf=new RandomAccessFile("test.txt","rw");
17         /**
18          *String 的getBytes()方法:
19          *将当前字符串按照当前系统默认的字符集转换为对应得而字节
20          */
21         String str="我爱学习,学习爱我";
22         byte[] buf=str.getBytes("GBK");
23         raf.write(buf);
24         raf.close();
25     }
26 
27 }

 

 



2、 **通过数组对数据的读取**
        int read(byte[] buf)
         一次尝试从文件中读取buf数组length个字节
          并从该数组的第I一个位置其起存放实际读取到的字节
         返回值为实际读到的字节数

 1 package day01;
 2 
 3 import java.io.FileNotFoundException;
 4 import java.io.IOException;
 5 import java.io.RandomAccessFile;
 6 
 7 /**
 8  * 读取一个字节数组的数据
 9  * @author Administrator
10  *
11  */
12 public class RandomAccessFileDemo5 {
13 
14     public static void main(String[] args) throws IOException {
15          RandomAccessFile raf =new RandomAccessFile("test.txt","r");
16     /**
17      * int read(byte[] buf)
18      * 一次尝试从文件中读取buf数组length个字节
19      * 并从该数组的第I一个位置其起存放实际读取到的字节
20      * 返回值为实际读到的字节数
21      */
22     //创建字符数组
23     byte[] buf =new byte[1000];
24     //读取文件,并返回实际读写到的字节数
25     int len=raf.read(buf);
26     /**
27      * 从字节数组转换为对应的字符串
28      */
29     //输出返回的字节数
30     System.out.println(len);
31     
32     //转换为字符串
33     String str=new String(buf);
34     //输出读到的字符串,并去空格
35     System.out.println(str.trim());
36     raf.close();
37     
38     }
39 
40 }

 

 



3、基于缓存形式复制文件


 1 package day01;
 2 
 3 import java.io.FileNotFoundException;
 4 import java.io.IOException;
 5 import java.io.RandomAccessFile;
 6 
 7 /**
 8  * 基于缓存形式复制文件
 9  * @author Administrator
10  *
11  */
12 public class RandomAccessFileDemo6 {
13 
14     public static void main(String[] args) throws IOException {
15          RandomAccessFile src=new RandomAccessFile("src.iso","r");
16         
17          RandomAccessFile copy=new RandomAccessFile("copy.iso","rw");
18          //计时开始
19          long start=System.currentTimeMillis();
20          //定义数组
21          byte[] str=new byte[1024*10];
22          /**
23           * int read(byte[] buf)
24           * 若返回值为-1,表示没有数据可读
25           */
26          int d=-1;
27          while( (d=src.read(str))!=-1 ){
28              //0:从0开始
29              //d:写入d个元素   即:读取了几个元素,就写入几个元素
30              copy.write(str,0,d);
31          }
32          src.close();
33          copy.close();
34          //计时结束
35          long end=System.currentTimeMillis();
36          System.out.println("拷贝完毕!");
37          System.out.println("用时:"+(end-start)+"ms");
38                 
39     }
40 
41 }

 


4、向文件中写入基本数据类型数据
(>>> :无符号右移,忽略符号位,空位以0补)


 1 package day01;
 2 
 3 import java.io.FileNotFoundException;
 4 import java.io.IOException;
 5 import java.io.RandomAccessFile;
 6 
 7 /**
 8  * 向文件中写入基本数据类型
 9  * @author Administrator
10  *
11  */
12 public class RandomAccessFileDemo7 {
13 
14     public static void main(String[] args) throws IOException {
15          RandomAccessFile raf=new RandomAccessFile(
16                  "raf.dat","rw");
17         
18          int num=Integer.MAX_VALUE;
19          //将int值写入文件
20          /**
21           *
22           * 01111111 111111111 11111111 11111111
23           *
24           * >>> :无符号右移,忽略符号位,空位以0补
25           */
26          //原生写法
27 //         raf.write(num>>>24);
28 //         raf.write(num>>>16);
29 //         raf.write(num);
30         
31          /**
32               * public final void writeInt(int v) throws IOException {
33               *write((v >>> 24) & 0xFF);
34               *write((v >>> 16) & 0xFF);
35               *write((v >>>  8) & 0xFF);
36               *write((v >>>  0) & 0xFF);
37                 //written += 4;
38               *}
39           */
40         
41          raf.writeInt(num);
42          raf.writeDouble(1.4);
43         
44          raf.writeLong(12234);
45          raf.close();
46         
47         
48     }
49 
50 }

 

 
5、对基本数据类型数据的读取

 

 1 package day01;
 2 
 3 import java.io.FileNotFoundException;
 4 import java.io.IOException;
 5 import java.io.RandomAccessFile;
 6 
 7 /**
 8  * 读写基本数据类型
 9  * @author Administrator
10  *
11  */
12 public class RandomAccessFileDemo8 {
13 
14     public static void main(String[] args) throws IOException {
15         
16         RandomAccessFile raf=new RandomAccessFile(
17                 "raf.dat","rw");
18          int i=raf.readInt();
19          double b=raf.redDouble();
20          System.out.println(i);
21     }
22 
23 }



posted on 2017-03-21 11:14  逆风前行的“小强”  阅读(524)  评论(0编辑  收藏  举报