• 5.17Java文件的拷贝


    5.17Java文件的拷贝

    实现原理

    在之前掌握了用Java进行文件的读与文件的写,所谓文件的拷贝就是利用程序作为一个中转站进行文件的内容从一个文件到另一个文件当中的过程。

    使用文件输入流和输出流达到文件的拷贝

    package iostudy.ioprogramme;

    import java.io.*;

    /**
    * 使用文件输入流和输出流达到文件的拷贝
    * 1、创建两个源文件--->输入的文件(源头)、写出的文件(目的地)
    * 2、选择流--->FileInputStream输入流、FileOutputStream输出流
    * 3、操作--->分段读取、分段写入--->缓冲容器(缓冲区)
    * 4、强制刷新
    * 5、分别关闭输入流和输出流--->先打开的后关闭
    * @since JDK 1.8
    * @date 2021/5/17
    * @author Lucifer
    */
    public class IoCopyNo1 {
       public static void main(String[] args) {
           //创建源
           /*源文件*/
           File src = new File("D:/workspace/practice/main/java/iostudy/ioprogramme/abc.txt");
           /*目标文件*/
           File dest = new File("D:/workspace/practice/main/java/iostudy/ioprogramme/def.txt");
           //选择流
           /*读取流*/
           InputStream is = null;
           /*写入流*/
           OutputStream os =null;
           //进行尝试操作
           try {
               /*读取流赋予文件读取流值*/
               is = new FileInputStream(src);
               /*写入流赋予文件写入流值*/
               os = new FileOutputStream(dest);
               //将文件读取到缓冲区
               /*新建缓冲区(缓存容器)*/
               byte[] flush = new byte[1024];
               /*一次性接收的文件的长度*/
               int temp = -1; //接受长度为-1开始
               /*将文件读取的长度赋值予一次性接收的文件长度且!=-1时开始写入*/
               while ((temp=is.read(flush))!=-1){
                   //将源文件内容写入目的文件
                   os.write(flush, 0, temp);
              }
               //关闭前刷新目的文件
               os.flush();
          }catch (FileNotFoundException e){
               e.printStackTrace();
          }catch (IOException e){
               e.printStackTrace();
          }finally {
               //当前面都没有异常的时候尝试请求释放资源
               try {
                   if (null!=os){
                       //后打开的文件先关闭,先关闭os
                       os.close();
                  }
              }catch (IOException e){
                   e.printStackTrace();
              }

               //先打开的文件后关闭
               try {
                   if (null!=is){
                       //请求关闭文件
                       is.close();
                  }
              }catch (IOException e){
                   e.printStackTrace();
              }
          }
      }
    }

    拷贝图片:--->方法一样,新建对象路径不一样

    package iostudy.ioprogramme;

    import java.io.*;

    /**
    * 使用文件输入流和输出流达到文件的拷贝
    * 1、创建两个源文件--->输入的文件(源头)、写出的文件(目的地)
    * 2、选择流--->FileInputStream输入流、FileOutputStream输出流
    * 3、操作--->分段读取、分段写入--->缓冲容器(缓冲区)
    * 4、强制刷新
    * 5、分别关闭输入流和输出流--->先打开的后关闭
    * @since JDK 1.8
    * @date 2021/5/17
    * @author Lucifer
    */
    public class IoCopyNo1 {
       public static void main(String[] args) {
           //创建源
           /*源文件*/
           File src = new File("C:/Users/Administrator/Desktop/Test_Work/Test_Picture/staticPicture.jpg");
           //这个操作可以完成图片内容的复制
           /*目标文件*/
           File dest = new File("C:/Users/Administrator/Desktop/Test_Work/Test_Copy_Picture/King.jpg");
           //选择流
           /*读取流*/
           InputStream is = null;
           /*写入流*/
           OutputStream os =null;
           //进行尝试操作
           try {
               /*读取流赋予文件读取流值*/
               is = new FileInputStream(src);
               /*写入流赋予文件写入流值*/
               os = new FileOutputStream(dest);
               //将文件读取到缓冲区
               /*新建缓冲区(缓存容器)*/
               byte[] flush = new byte[1024];
               /*一次性接收的文件的长度*/
               int temp = -1; //接受长度为-1开始
               /*将文件读取的长度赋值予一次性接收的文件长度且!=-1时开始写入*/
               while ((temp=is.read(flush))!=-1){
                   //将源文件内容写入目的文件
                   os.write(flush, 0, temp);
              }
               //关闭前刷新目的文件
               os.flush();
          }catch (FileNotFoundException e){
               e.printStackTrace();
          }catch (IOException e){
               e.printStackTrace();
          }finally {
               //当前面都没有异常的时候尝试请求释放资源
               try {
                   if (null!=os){
                       //后打开的文件先关闭,先关闭os
                       os.close();
                  }
              }catch (IOException e){
                   e.printStackTrace();
              }

               //先打开的文件后关闭
               try {
                   if (null!=is){
                       //请求关闭文件
                       is.close();
                  }
              }catch (IOException e){
                   e.printStackTrace();
              }
          }
      }
    }

    处理代码:

    package iostudy.ioprogramme;

    import java.io.*;

    /**
    * 使用文件输入流和输出流达到文件的拷贝
    * 1、创建两个源文件--->输入的文件(源头)、写出的文件(目的地)
    * 2、选择流--->FileInputStream输入流、FileOutputStream输出流
    * 3、操作--->分段读取、分段写入--->缓冲容器(缓冲区)
    * 4、强制刷新
    * 5、分别关闭输入流和输出流--->先打开的后关闭
    * @since JDK 1.8
    * @date 2021/5/17
    * @author Lucifer
    */
    public class IoCopyNo1 {
       public static void main(String[] args) {
           copy("D:/workspace/practice/main/java/iostudy/ioprogramme/IoFileInputStream.java",
                   "D:/workspace/practice/main/java/iostudy/ioprogramme/abc.txt");
      }

       //封装成方法

       /**
        * 文件拷贝的方法
        * 思考:利用递归制作文件夹的拷贝
        * @param srcPath
        * @param dastPath
        */
       public static void copy(String srcPath, String dastPath){
           //创建源
           /*源文件*/
           File src = new File(srcPath);
           //这个操作可以完成图片内容的复制
           /*目标文件*/
           File dest = new File(dastPath);
           //选择流
           /*读取流*/
           InputStream is = null;
           /*写入流*/
           OutputStream os =null;
           //进行尝试操作
           try {
               /*读取流赋予文件读取流值*/
               is = new FileInputStream(src);
               /*写入流赋予文件写入流值*/
               os = new FileOutputStream(dest);
               //将文件读取到缓冲区
               /*新建缓冲区(缓存容器)*/
               byte[] flush = new byte[1024];
               /*一次性接收的文件的长度*/
               int temp = -1; //接受长度为-1开始
               /*将文件读取的长度赋值予一次性接收的文件长度且!=-1时开始写入*/
               while ((temp=is.read(flush))!=-1){
                   //将源文件内容写入目的文件
                   os.write(flush, 0, temp);
              }
               //关闭前刷新目的文件
               os.flush();
          }catch (FileNotFoundException e){
               e.printStackTrace();
          }catch (IOException e){
               e.printStackTrace();
          }finally {
               //当前面都没有异常的时候尝试请求释放资源
               try {
                   if (null!=os){
                       //后打开的文件先关闭,先关闭os
                       os.close();
                  }
              }catch (IOException e){
                   e.printStackTrace();
              }

               //先打开的文件后关闭
               try {
                   if (null!=is){
                       //请求关闭文件
                       is.close();
                  }
              }catch (IOException e){
                   e.printStackTrace();
              }
          }
      }
    }

    特点:

    • 字节流可以处理图片、村文本等

    • 纯文本里面全是字符

    •  

    It's a lonely road!!!
  • 相关阅读:
    HTML5项目笔记7:使用HTML5 WebStorage API构建与.NET对应的会话机制 Hello
    论设计模式和分析模式
    昨天我做了点什么事情啊?
    时间,时间,还是时间
    人生需要规划
    突然想起今天的博客汇报没写
    昨天看了熊猫大侠
    双休日往往会忘了写日志
    老婆说我是缺心眼!
    要下班了才想起没写报告
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14779465.html
Copyright © 2020-2023  润新知