java IO流_关闭流方法_jdk1.7新特性_try_with_resource_练习

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();
      }
      }
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值