import java.io.*;
/**
* 1、封装拷贝
* 2、封装释放资源
*/
public class FileUtils {
public static void main(String[] args) {
//从文件到文件
try {
InputStream is = new FileInputStream("abc.txt");
OutputStream os = new FileOutputStream("abc-copy.txt");
copy(is, os);
} catch (IOException e) {
e.printStackTrace();
}
//从文件到字节数组
byte[] data = null;
try {
InputStream is = new FileInputStream("test.bmp");
ByteArrayOutputStream os = new ByteArrayOutputStream();
copy(is, os);
data = os.toByteArray();
System.out.println(data.length);
} catch (IOException e) {
e.printStackTrace();
}
//从字节数组到文件
try {
InputStream is = new ByteArrayInputStream(data);
OutputStream os = new FileOutputStream("test-copy.bmp");
copy(is, os);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void copy(InputStream is, OutputStream os) {
try {
int len = -1;
byte[] flush = new byte[1024];
while((len = is.read(flush)) != -1)
os.write(flush, 0, flush.length);
} catch (IOException e) {
e.printStackTrace();
} finally {
close(is, os);
}
}
public static void close(InputStream is, OutputStream os) {
if(os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//使用可变参数改进
public static void close(Closeable...io) {
for(Closeable ios: io) {
if(ios != null) {
try {
ios.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
IO流对接的封装
最新推荐文章于 2022-07-30 15:59:13 发布