重点:
1、这里需要用到两个流FileInputStream和FileOutputStream都属于字节流,两个流关闭时不要同时try,要分开try。
2、输出流使用FileOutputStream(String name, boolean append)这种构造方法,不会将原创建的文件覆盖。设置每次拷贝大小。
3、输出流的最后要刷新,才能保证管道清空,使用flush()方法。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test{
public static void main(String[] args) {
//声明两个流,赋null
FileInputStream fis = null;
FileOutputStream fos = null;
try {
//创建输出流对象,末端继续添加方式true
fos = new FileOutputStream("输出路径及文件名",true);
//创建输入流对象
fis = new FileInputStream("需要拷贝的文件路径");
//每次拷贝1MB字节
byte[] bytes = new byte[1024 * 1024];
int readCount = 0;
//要采取write(byte b[], int off, int len)的方式写,不然会多拷贝
while (((readCount) = fis.read(bytes)) != -1){
fos.write(bytes,0,readCount);
}
//输出流的最后要刷新,才能保证管道清空
fos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//不要同时try,要分开try
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
网友评论