实现copy的代码:
java
package a0420.iotest1.Test2;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
CopyMethod.FileCopy("D:\\idealTestio\\copy.txt","D:\\idealTestio\\finalPase");
}
}
主要想解释一下这个异常为什么要这么写:
请详细看我代码里的解释:
java
package a0420.iotest1.Test2;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyMethod {
public static void FileCopy(String basePath,String finalPath ){
File startFile=new File(basePath);
File endFile=new File(finalPath);
FileInputStream fis=null;//为什么要把这两个弄出来定义?
FileOutputStream fos=null;//因为这个如果不弄出来定关闭流的时候可能会没有流对象
//定义空是因为要给初始值才能调方法例如后面用这个流调了关闭
流的方法(要给初始值才能调用方法不然调不出来)
try {
fis=new FileInputStream(startFile);
fos=new FileOutputStream(endFile);
byte[] bytes=new byte[1024];
int len;
while((len=fis.read(bytes))!=-1){
fos.write(bytes,0,len);
}
} catch (IOException e){
e.printStackTrace();
}finally {//关闭流放在这个里面是为了必须要关闭
if(fos!=null){//判断为空是因为如果为空的话控制台会报控制指针异常
try {
fos.close();//这里捕获异常是因为clos的原因,搜了一下有很多种原因
//我比较赞成的一种原因是:可能前面会关掉,可能流会异常关不掉
等等所以会抛出异常!!!!!!!
} catch (IOException e) {
e.printStackTrace();
}
}
if(fis!=null){//这里就和上面的输出流解释一样了
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}