今天学习了IO流,做了一个文件拷贝的练习,从这个练习中,我知道了在使用IO基本操作中,存在一些需要注意的一些地方,例如异常处理:
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;
public class TestCopy {
public static void main(String[] args) {
//输入路径
String src=“d:”+File.separator+“b”+File.separator+“a.png”;
//输出路径
String dest=“d:”+File.separator+“c”+File.separator+“b.png”;
//定义输入输出流变量
InputStream in=null;
OutputStream out=null;
try {
//创建输入流和输出流
out=new FileOutputStream(dest);
in = new FileInputStream(src);
int num;
byte [] b=new byte[1024*2];
//一边读一边写
while((num=in.read(b))!=-1){
out.write(b, 0, num);
}
} catch (FileNotFoundException e) {
//异常处理
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}finally{
try {
if(in!=null)
in.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
try {
if(out!=null)
out.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
System.out.println(“拷贝完成”);
}
}
这是一个简单的文件拷贝程序。
我们写代码的时候要注意:
- InputStream 和OutputStream在初始化的时候为null值。因为这两个变量要写在几个代码块中,所以在函数最外面定义,并且赋初值为null才能使这个变量的访问范围足够这几个代码块都能访问。
2.在异常处理为什么是 throw new RuntimeException(e)?因为程序一旦出现错误,我们就要让程序终止。用Exit和return让程序中止都有弊端,所以我们将异常信息封装并抛出,这样既实现了程序终止,也告诉了使用者出错的信息,让其可以处理 -
if(in!=null) in.close();
这个if条件紧随关闭操作,