zoukankan      html  css  js  c++  java
  • IO流实现简单的文件的剪切

    思路:
    判断 即将 复制的文件是文件夹还是文件
    遍历需要复制的源文件夹
    如果是文件夹,就通过流创建一个同样的子文件夹
    如果是文件,就复制过去
    接下来上代码

    public class Demo1 {
    
        public static void main(String[] args) {
            //裁剪的文件
            String f1 = "C:\Users\KAlways18\Desktop\1216作业\1216作业";
            //保存的位置
            String f2 = "C:\Users\KAlways18\Desktop\1216作业\第一题完成后没有这个文件夹\1216作业\1216作业1";
            One(f1, f2);
        }
    
        //先进行文件的父目录的创建在进行子目录的创建
        public static void One(String f1, String f2) {
            File crop = new File(f1);
            File save = new File(f2, crop.getName());
            if (!save.exists()) {//判断目录是否存在
                save.mkdir();//创建单个文件
            }
            traverse(crop.getAbsolutePath(), save.getAbsolutePath());//调用方法
            //删除父目录
            //这时候删除父目录时没有子目录了可以正常删除
            if (crop.delete()) {
                System.out.println("父目录删除成功");
            }
        }
    
        //穿过
        public static void traverse(String f1, String f2) {
            try {
                File crop = new File(f1);//拷贝
                if (!crop.isDirectory()) {//如果不是文件就不复制
                    return;
                }
                File save = new File(f2);//保存
                if (!save.exists()) {//判断路径是否存在不存在就创建
                    save.mkdir();//创建单个文件
                }
                File[] files = crop.listFiles();
                for (File f : files) {
                    //separator与系统相关的默认分隔符
                    String strCrop = f1 + File.separator + f.getName();//拼接
                    System.out.println("需要复制文件夹:" + strCrop);
                    String strSave = f2 + File.separator + f.getName();
                    System.out.println("粘贴文件夹:" + strSave);
                    if (f.isDirectory()) {
                        System.out.println("
    正在创建文件夹" + f.getName() + "
    ");
                        traverse(strCrop, strSave);
                    }
                    //如果是文件就进行写入
                    if (f.isFile()) {
                        System.out.println("
    正在创建文件" + f.getName() + "
    ");
                        makeFile(strCrop, strSave);
                    }
                    //删除文件,只能删除子目录文件还要进行删除父目录文件在第一次调用方法时进行删除
                    if (f.delete()) {
                        System.out.println("子文件或者子文件夹删除成功");
                    }
                }
            } catch (Exception e) {
                System.out.println("文件可能找不到");
                e.printStackTrace();
            }
        }
    
    
        //文件复制
        public static void makeFile(String f1, String f2) {
            //写在try中进行捕获不需要关流
            try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f1));//输入读取
                 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f2));//输出写入
            ) {
                int tem = 0;
                byte[] b = new byte[1024];
                while ((tem = bis.read(b)) != -1) {
                    bos.write(b);
                }
    
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    }
    
    
  • 相关阅读:
    html5 保存图片到服务器本地
    html5 canvas分层
    webstorm配置scss自动编译路径
    微信开发测试号配置
    html5手机网站需要加的那些meta/link标签,html5 meta全解
    css去掉iPhone、iPad默认按钮样式
    如何激活webstorm 11
    min-height在安卓下不起作用
    基于字符串模式的路由路径的一些示例。
    nodeJS搭建本地服务器
  • 原文地址:https://www.cnblogs.com/zk2020/p/14148618.html
Copyright © 2011-2022 走看看