package IO流_关闭流方法_try_with_resource;
import java.io.Closeable;
import java.io.IOException;
/**
*
- 1.编写工具类,实现关闭功能
- 2.工具参数:…3个点只能放在形参的最后一个位置;处理方式与数组一致
/
public class FileUtil {
/*- 工具类关闭流
/
public static void close(Closeable … io){//3个点代表可变参数;或者用close(String info,Closeable … io)
for(Closeable temp:io){//Closeable可关闭的
if(null !=temp){
try {
temp.close();//实现了close接口就有close方法
} catch (IOException e) {
e.printStackTrace() ;
}
}
}
}
/* - 使用泛型方法
*/
public static void closeAll(T … io){
for(Closeable temp:io){//Closeable可关闭的
if(null !=temp){
try {
temp.close();//实现了close接口就有close方法
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
//---------------------------------------------
package IO流_关闭流方法_try_with_resource;
- 工具类关闭流
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
/**
- 程序参考文件拷贝一章
- 关闭流方法;jdk1.7以后的新特性 try-- with–resource
/
public class CopyFileDemo {
/*- @param args
- @throws IOException
/
public static void main(String[] args) {
String src = “E:/xp/test/tx.jpg”;
String dest = “E:/xp/test/1.jpg”;
/try {
copyFile(src,dest );
} catch (IOException e) {
System.out.println(“文件不存在”);
e.printStackTrace();
}/
try {
copyFile2(src,dest);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/* - 文件的拷贝
- 源文件路径
- 目标文件路径
/
public static void copyFile(String srcPath,String destPath) throws IOException {
//建立联系 源存在且为文件+目的地;目的地可以不存在
File src = new File(srcPath);
File dest = new File(destPath);
//为了程序的健硕性;加个判断
if(!src.isFile()){//不是文件或者为空
System.out.println(“只能拷贝文件”);
throw new IOException(“只能拷贝文件”);//业务异常判断;下面可以不用return
//return ;
}
//选择流
InputStream is = new FileInputStream(src);
OutputStream os = new FileOutputStream(dest);
//文件拷贝;循环+读取+拷贝
byte[] flush = new byte[1024];//字节数组;相当于容器
int len =0;
//读取
while(-1 !=(len=is.read(flush))){//处理异常
//写出
os.write(flush, 0, len);//读出多少个就写多少个
}
os.flush();//强制刷出
//关闭源
FileUtil.closeAll(os,is);
}
/* - jdk1.7以后的新特性 try-- with–resource
*/
public static void copyFile2(String srcPath,String destPath) throws IOException {
//建立联系 源存在且为文件+目的地;目的地可以不存在
File src = new File(srcPath);
File dest = new File(destPath);
//为了程序的健硕性;加个判断
if(!src.isFile()){//不是文件或者为空
System.out.println(“只能拷贝文件”);
throw new IOException(“只能拷贝文件”);//业务异常判断;下面可以不用return
//return ;
}
//选择流;加个 try-- with–resource
try(//声明部分;创建对象
InputStream is = new FileInputStream(src);
OutputStream os = new FileOutputStream(dest);
){
//文件拷贝;循环+读取+拷贝
byte[] flush = new byte[1024];//字节数组;相当于容器
int len =0;
//读取
while(-1 !=(len=is.read(flush))){//处理异常
//写出
os.write(flush, 0, len);//读出多少个就写多少个
}
os.flush();//强制刷出
}catch(IOException e) {//1.7以后是自动关掉
e.printStackTrace();
}
}
}