Java复制、读取大文件的固定套路
/**
* 测试文件拷贝的方法
* @throws IOException
*/
@Test
public void copyFileTest() throws IOException {
// 边读,边写
File old = new File("msg/123123123.txt");
File copy = new File("msg/123123123-副本.txt");
// rafRead对象专门用于读取旧文件中的字节
RandomAccessFile rafRead = new RandomAccessFile(old, "r");
// rafWrite专门用于将读取到的字节写入到新的文件中
RandomAccessFile rafWrite = new RandomAccessFile(copy, "rw");
/* 复制、读取大文件的固定套路
* Step1:定义byte数组,适当限定数组大小
* Step2:使用while循环,反复调用read方法
* 每次循环读取和数组大小相同的字节数
* 说明:read方法和write方法一样,每读取一个字节,就向后移动一个位置
* 读取了多少个字节,就向后移动了多少个位置
* 调用write方法,将读取到的字节数组,写入新文件中
* 一旦read方法返回-1,说明读到末尾,就退出循环
* Step3:*关闭两个raf对象*
*/
byte[] bytes = new byte[1024];
while(rafRead.read(bytes) != -1) {
rafWrite.write(bytes);
}
System.out.println("复制完成");
rafRead.close();
rafWrite.close();
}