java IO流 (八) RandomAccessFile的使用
时间:2021-07-01 10:21:17
帮助过:4人阅读
public void test1() {
RandomAccessFile raf1 =
null;
RandomAccessFile raf2 =
null;
try {
//1.
raf1 =
new RandomAccessFile(
new File("爱情与友情.jpg"),"r"
);
raf2 =
new RandomAccessFile(
new File("爱情与友情1.jpg"),"rw"
);
//2.
byte[] buffer =
new byte[1024
];
int len;
while((len = raf1.read(buffer)) != -1
){
raf2.write(buffer,0
,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//3.
if(raf1 !=
null){
try {
raf1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(raf2 !=
null){
try {
raf2.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
典型代码2:
/*
使用RandomAccessFile实现数据的插入效果
*/
@Test
public void test3()
throws IOException {
RandomAccessFile raf1 =
new RandomAccessFile("hello.txt","rw"
);
raf1.seek(3);
//将指针调到角标为3的位置
//保存指针3后面的所数据到StringBuilder中
StringBuilder builder =
new StringBuilder((
int)
new File("hello.txt"
).length());
byte[] buffer =
new byte[20
];
int len;
while((len = raf1.read(buffer)) != -1
){
builder.append(new String(buffer,0
,len)) ;
}
//调回指针,写入“xyz”
raf1.seek(3
);
raf1.write("xyz"
.getBytes());
//将StringBuilder中的数据写入到文件中
raf1.write(builder.toString().getBytes());
raf1.close();
//思考:将StringBuilder替换为ByteArrayOutputStream
}
java IO流 (八) RandomAccessFile的使用
标签:操作 tput bytes throw 使用 read tst row java io