IO流之随机存取文件流
RandomAccessFile的使用
- RandomAccessFile直接继承于java.lang.Object类,实现了DataInput和DataOutPut接口
- RandomAccessFile既可以作为一个输入流,又可以作为一个输出流。
- 如果RandomAccessFile作为输出流时,写出到的文件如果不存在,则在执行过程中自动创建;如果写出的文件存在,则会对原有文件内容进行覆盖。(默认情况下,从头覆盖)
- void seek(long pos):将文件记录指针定位到 pos 位置
举例
package com.yicurtain.IO;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFileTest {
@Test
public void test1(){
// 1.
RandomAccessFile raf1 = null;
RandomAccessFile raf2 = null;
try {
raf1 = new RandomAccessFile(new File("beauty.jpg"),"r");
raf2 = new RandomAccessFile(new File("beauty2.jpg"),"rw");
// 2.
byte[] cbuf = new byte[20];
int len;
while ((len=raf1.read(cbuf))!=-1){
raf2.write(cbuf);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 3.
try {
if (raf1!=null)
raf1.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (raf2!=null)
raf2.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
导入jar包复制使用方法
开发中,一般不自己写IO流的源码,导入jar包,使用方法。(尚硅谷 p619)
package com.yicurtain.IO;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class jarTest {
public static void main(String[] args) {
try {
File srcFile = new File("D:\\JAVA\\java file\\基础语法\\HelloWorld\\IOStream\\beauty.jpg");
File desFile = new File("D:\\JAVA\\java file\\基础语法\\HelloWorld\\IOStream\\beauty3.jpg");
FileUtils.copyFile(srcFile,desFile);
} catch (IOException e) {
e.printStackTrace();
}
}
}