- 通过数组实现对一组数据的写入
package day01;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 批量写入一组字节
* @author Administrator
*
*/
public class RandomAccessFileDemo4 {
public static void main(String[] args) throws IOException {
RandomAccessFile raf=new RandomAccessFile("test.txt","rw");
/**
*String 的getBytes()方法:
*将当前字符串按照当前系统默认的字符集转换为对应得而字节
*/
String str="我爱学习,学习爱我";
byte[] buf=str.getBytes("GBK");
raf.write(buf);
raf.close();
}
}
2、 通过数组对数据的读取
int read(byte[] buf)
一次尝试从文件中读取buf数组length个字节
并从该数组的第I一个位置其起存放实际读取到的字节
返回值为实际读到的字节数
package day01;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 读取一个字节数组的数据
* @author Administrator
*
*/
public class RandomAccessFileDemo5 {
public static void main(String[] args) throws IOException {
RandomAccessFile raf =new RandomAccessFile("test.txt","r");
/**
* int read(byte[] buf)
* 一次尝试从文件中读取buf数组length个字节
* 并从该数组的第I一个位置其起存放实际读取到的字节
* 返回值为实际读到的字节数
*/
//创建字符数组
byte[] buf =new byte[1000];
//读取文件,并返回实际读写到的字节数
int len=raf.read(buf);
/**
* 从字节数组转换为对应的字符串
*/
//输出返回的字节数
System.out.println(len);
//转换为字符串
String str=new String(buf);
//输出读到的字符串,并去空格
System.out.println(str.trim());
raf.close();
}
}
3、基于缓存形式复制文件
package day01;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 基于缓存形式复制文件
* @author Administrator
*
*/
public class RandomAccessFileDemo6 {
public static void main(String[] args) throws IOException {
RandomAccessFile src=new RandomAccessFile("src.iso","r");
RandomAccessFile copy=new RandomAccessFile("copy.iso","rw");
//计时开始
long start=System.currentTimeMillis();
//定义数组
byte[] str=new byte[1024*10];
/**
* int read(byte[] buf)
* 若返回值为-1,表示没有数据可读
*/
int d=-1;
while( (d=src.read(str))!=-1 ){
//0:从0开始
//d:写入d个元素 即:读取了几个元素,就写入几个元素
copy.write(str,0,d);
}
src.close();
copy.close();
//计时结束
long end=System.currentTimeMillis();
System.out.println("拷贝完毕!");
System.out.println("用时:"+(end-start)+"ms");
}
}
4、向文件中写入基本数据类型数据
(>>> :无符号右移,忽略符号位,空位以0补)
package day01;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 向文件中写入基本数据类型
* @author Administrator
*
*/
public class RandomAccessFileDemo7 {
public static void main(String[] args) throws IOException {
RandomAccessFile raf=new RandomAccessFile(
"raf.dat","rw");
int num=Integer.MAX_VALUE;
//将int值写入文件
/**
*
* 01111111 111111111 11111111 11111111
*
* >>> :无符号右移,忽略符号位,空位以0补
*/
//原生写法
// raf.write(num>>>24);
// raf.write(num>>>16);
// raf.write(num);
/**
* 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;
*}
*/
raf.writeInt(num);
raf.writeDouble(1.4);
raf.writeLong(12234);
raf.close();
}
}
5、对基本数据类型数据的读取
package day01;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 读写基本数据类型
* @author Administrator
*
*/
public class RandomAccessFileDemo8 {
public static void main(String[] args) throws IOException {
RandomAccessFile raf=new RandomAccessFile(
"raf.dat","rw");
int i=raf.readInt();
double b=raf.redDouble();
System.out.println(i);
}
}