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 }