1…文件拷贝示例
public static void main(String[] args) throws IOException {
/*每次读取到数组中,并且从数组中写入到文件,边读边写*/
FileInputStream fis = new FileInputStream("F:/bb.txt");
FileOutputStream fos = new FileOutputStream("F:/cc.txt");
byte[] b = new byte[1024];
int len;
while((len = fis.read(b)) != -1){
fos.write(b,0,len);
}
}
如上示例:IO中的一场我们自己不处理直接抛出在实际开发中是不合适的,所以我们需要进行处理
2.关流方式
传统方式处理
try{
可能发生异常的代码块
}catch(异常类型 形式参数){
捕获异常之后要做的处理
}finally{
异常语句块一定会执行的代码块,释放锁,关闭流资源
}
FileInputStream fis = null;//局部变量,在使用之前应该初始化
FileOutputStream fos = null;
try {
fis = new FileInputStream(src);
fos = new FileOutputStream(dest);
byte[] b = new byte[1024];
int len;
while((len = fis.read(b)) != -1){
fos.write(b,0,len);
}
} catch (Exception e) {
e.printStackTrace();//获取异常信息
}finally{
try {//先使用后关闭
if(fos != null)
fos.close();
if(fis != null )
fis.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Java7新方式
自动关闭的流资源,必须是实现了AutoCloseable
FileInputStream extends InputStream implements Closeable extends AutoCloseable
try(需要自动关闭的流资源){
可能发生异常的代码块
}catch(){
捕获异常之后要做的处理
}
try(
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
){
byte[] b = new byte[1024];
int len;
while((len = fis.read(b)) != -1){
fos.write(b,0,len);
}
}catch(Exception e){
e.printStackTrace();
}