IO字节流简单小结应用

 

  • 常用几种流
  1. 字节流:可以处理一切,包括文本,音频,视频,图像等
    1. InputStream字节输入流,读取文件
  •  读取步骤:

①建立源文件对象File

②创建InputStream字节流(可以理解为管道,使用FileInputStream发生多态)

③操作:创建字节数组,将读取内容循环读入字节数组里,使用字节数组转字符串

④关闭流

  • 代码: 
    InputStream input=null;//提升作用域
      try {
     input=new FileInputStream(path);
     //步骤3:不断读取缓冲数组
     byte[] data=new byte[10];//
     int len;
     //循环读取
     while(-1!=(len=input.read(data)))
      {
     //输出,字节数组转成字符串
      String str=new String(data,0,len);
      System.out.println(str);
     }
    
    
  • OutputStream字节输出流,写入文件
  •    写入步骤:

①建立源文件对象File

②创建OutputStream字节流(可以理解为管道,使用FileOutputStream发生多态,其中有一个布尔参数标志位,true表示追加源文件对象,false表示覆盖源文件,默认覆盖)

③操作:将内容字符串转成字节数组对象,写入OutPutStream,并强制在缓冲流刷出

④关闭流close

  • 代码: 

     

    1. 文件拷贝:(循环+InputStream+OutputStream)
  •  写入步骤

         ①创建源文件对象,目的文件对象

         ②创建字节流(读取流+写入流)

         ③操作:循环+InputStream操作+OutputStream操作

       ④关闭:先开的流后关闭

  • 代码:
public static void copyFile(File src,File dest) throws IOException

     {
      InputStream input=null;
      OutputStream output=null;
      if(!src.isFile()){
             return;
               }
    try {
      input = new FileInputStream(src);

       output = new FileOutputStream(dest);

    } catch (FileNotFoundException e) {
     System.out.println("文件创建失败");
}

         byte[] data=new byte[1024];
         int len=0;
         while(-1!=(len=input.read(data))) {
          output.write(data, 0, len);
         }
         output.flush();

         output.close();

         input.close();

  }
    1. 文件夹拷贝:
  •    写入步骤

          ①创建源文件的夹,目的文件夹

          ②文件夹操作细节:

  1. 拷贝文件(参考1.3)
  2. 调用mkdirs()方法确保创建文件夹
  3. 递归获取子孙级文件目录
  • 代码:
    public static void copyFileDetail(File src,File dir) throws IOException {
       if(src.isFile())//文件
      {
         try {
             FileUtils.copyFile(src, dir);//文件拷贝
    } catch (IOException e) {
            e.printStackTrace();
            throw e;
      }
    }else if(src.isDirectory()){
         //创建文件夹
         dir.mkdirs();
         //获取下一级的子文件
         for (File subFile : src.listFiles()) {
           copyFileDetail(subFile, new File(dir,subFile.getName()));
              }
           }
        }
    
       
    
    

     

    

 

 

    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值