• 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();
                    }
                }
            }
        }
    }
  • 相关阅读:
    五大P2P平台费用一览
    警惕P2B模式
    仿照jquery封装一个自己的js库
    怎样给div增加resize事件
    美化浏览器滚动条效果
    手机端触屏手指滑动方向及拖动层
    JS中原型链中的prototype与_proto_的个人理解与详细总结(**************************************************************)
    JavaScript this用法总结(**************************************)
    js中call、apply、bind那些事2
    深刻理解JavaScript---闭包
  • 原文地址:https://www.cnblogs.com/here-I-am/p/11601886.html
Copyright © 2020-2023  润新知