• IO流——文件的拷贝


    IO流——文件的拷贝

    问题描述:

      1.在控制台输入一个文件路径(src)
      2.输入target路径
      3.将src路径指定的文件拷贝到target目录下
    例如:
      F: est .txt
      F:aaa

    import java.io.*;
    import java.util.Scanner;
    
    /**
     * 手写文件复制
     */
    public class Copy {
        public static void main(String[] args) {
    
            Scanner input = new Scanner(System.in);
    
            System.out.println("请输入源文件路径 ");
            String srcPath = input.nextLine();
            File srcFile = new File(srcPath);
    
            System.out.println("请输入目标路径");
            String targetPath = input.nextLine();
            File targetFile = new File(targetPath + srcFile.getName());
    
            //如果输入的目标路径有不存在的父目录则需要在此判断父路径存不存在,不存在则创建,否则不会主动创建父目录,则报错
            File s = new File(targetPath);
            if (!s.exists()) {
                s.mkdirs();
            }
    
            InputStream is = null;
            OutputStream os = null;
            try {
                is = new FileInputStream(srcFile);
                os = new FileOutputStream(targetFile);
                //为了提高效率,设置缓存数组(读取的字节数据会暂存放到该字节数组中)
                byte[] bytes = new byte[8];
                //i指的是本次读取的真实长度,temp等于-1时表示读取结束
                int i = 0;
                while ((i = is.read(bytes)) != -1) {
                    os.write(bytes, 0, i);
                }
                /**
                 * 将缓存数组中的数据写入文件中,注意:写入的是读取的真实长度;
                 * 如果使用out.write(bytes)方法,那么写入的长度将会是8,即缓存数组的长度
                 */
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                //两个流需要分别关闭
                if (is != null) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (os != null) {
                    try {
                        os.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
  • 相关阅读:
    (转)Linux端口nmap和netstat命令
    (转)Linux下增加交换分区的大小
    (转)centos7安装telnet服务
    (转)VmWare下安装CentOS7图文安装教程
    (转)Linux系统安装时分区的选择
    (转)硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍
    (转).tar.gz文件和.rpm文件的区别
    (转)Linux(Centos)之安装Java JDK及注意事项
    ibatis中integer类型
    ibatis时间比较大小
  • 原文地址:https://www.cnblogs.com/here-I-am/p/11601886.html
Copyright © 2020-2023  润新知