package io02;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
- 1.封装拷贝
- 2.封装释放资源
- @author
*/
public class FileUtils {
public static void main(String[] args) {
//文件到文件
try {
InputStream is = new FileInputStream(“1.txt”);
OutputStream os = new FileOutputStream(“2.txt”);
copy(is, os);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//文件到字节数组
byte[] temp = null;
try {
InputStream is = new FileInputStream("1.jpg");
ByteArrayOutputStream os = new ByteArrayOutputStream();
copy(is, os);
temp = os.toByteArray();
System.out.println(temp.length);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//字节数组到文件
try {
InputStream is = new ByteArrayInputStream(temp);
OutputStream os = new FileOutputStream("1-copy.jpg");
copy(is, os);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 对接输入输出流
* @param is
* @param os
*/
public static void copy(InputStream is,OutputStream os) {
try {
//操作 分段读取
byte[] flush = new byte[1024];//缓冲容器
int len = -1;//接收长度
while((len = is.read(flush)) != -1) {
os.write(flush,0,len);//分段写出
}
os.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 释放资源
* @param is
* @param os
*/
public static void close(InputStream is,OutputStream os) {
try {
if(null != os) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(null != is) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
close(is, os);
}
}
/**
* 释放资源
* @param ios
*/
public static void close(Closeable... ios) {//Closeable可以用来释放流
for(Closeable io:ios) { //... 可变参数
try {
if(null != io) {
io.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}