目录:使用字节流做文件复制
因为计算机所有的文件底层都是字节。
字节流很适合做一切文件数据的复制:因为它是把源文件的字节一字不漏的转移给目标文件
只要文件前后的格式一样就不会出问题。
分析:
(1)创建一个字节输入流管道与源文件接通。
(2)创建一个字节输出流管道与目标文件接通。
(3)定义一个字节数组。
(4)定义一个循环从字节输入流读取数据倒出到字节输出流管道。
源文件:D:\itcast\图片资源\meinv.jpg
目标文件:D:\itcast\dlei.jpg
public class CopyDemo01 {
public static void main(String[] args) {
InputStream is = null;
OutputStream os = null;
try {
//(1)创建一个字节输入流管道与源文件接通。
is = new FileInputStream("D:\\itcast\\图片资源\\meinv.jpg");
//(2)创建一个字节输出流管道与目标文件接通。
os = new FileOutputStream("D:\\itcast\\dlei.jpg");
//(3)定义一个字节数组。
byte[] buffer = new byte[1024];
//(4)定义一个循环从字节输入流读取数据倒出到字节输出流管道。
int len ;
while((len = is.read(buffer))!=-1){
// 读取多少倒出多少。
os.write(buffer,0,len);
}
System.out.println("复制完成!");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 释放资源。
if(os!=null) os.close();
if(is!=null) is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
JDK 1.7开始关闭资源的新方式:try-with-resources.
try(
这里只能放置资源,用完会自动调用资源的close方法关闭资源。
){
}catch (Exception e) {
e.printStackTrace();
}
什么是资源:Java认为一个类只要实现了Closeable接口就是资源。
public class CopyDemo02 {
public static void main(String[] args) {
try (
//(1)创建一个字节输入流管道与源文件接通。
InputStream is = new FileInputStream("D:\\itcast\\图片资源\\meinv.jpg");
//(2)创建一个字节输出流管道与目标文件接通。
OutputStream os = new FileOutputStream("D:\\itcast\\dlei.jpg");
){
//(3)定义一个字节数组。
byte[] buffer = new byte[1024];
//(4)定义一个循环从字节输入流读取数据倒出到字节输出流管道。
int len ;
while((len = is.read(buffer))!=-1){
// 读取多少倒出多少。
os.write(buffer,0,len);
}
System.out.println("复制完成!");
} catch (Exception e) {
e.printStackTrace();
}
}
}