将E盘下的180文件夹下的所有最深层文件放到E盘下的car文件加下,并且要求重命名文件,并且判断最里层文件同目录下是否有多个文件,并且判断文件夹是否为空

简介: package com.cheyoushuor.enamefile; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; imp

package com.cheyoushuor.enamefile;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class ReNameFileName {
    private static int COUNT = 0;
    private static int NUM = 0;

    /**
     * @param args
     * @throws IOException
     * @throws FileNotFoundException
     */
    public static void main(String[] args) throws FileNotFoundException, IOException {
        readAndCopeFile("E:" + File.separator + "180");
    }

    /*
     * 执行文件复制操作
     */
    public static void copyFile(String filePath) {
        File file = new File(filePath);
        System.out.println(file.getName());
    }

    /**
     * 读取文件并且复制文件到指定目录
     *
     * @param filepath
     * @return
     * @throws FileNotFoundException
     * @throws IOException
     */
    public static boolean readAndCopeFile(String filepath)
            throws FileNotFoundException, IOException {
        try {
            File file = new File(filepath);
            if (file.isDirectory()) {
                NUM++;
                System.out.println(NUM + "Nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn");
                String[] filelist = file.list();
                for (int i = 0; i < filelist.length; i++) {
                    File readfile = new File(filepath + "\\" + filelist[i]);
                    if (!readfile.isDirectory()) {
                        System.out.println("\r\n");

                        //获取文件绝对路径
                        String filePath = readfile.getPath();
                        //System.out.println("path=" + filePath);

                        //获取原文件的名称
                        String fileName = readfile.getName();
                        //System.out.println("fileName = " + fileName);

                        //测试拼接的文件路径是否正确
                        //System.out.println("E:" + File.separator + "car" + File.separator + fileName);

                        //父文件夹的路径
                        String parentFileName = readfile.getParent();
                       
                        File parentFile = new File(parentFileName);
                        //用于判断文件夹里面的文件到底有多少个。如果一个文件夹下多个文件,那么现实是多个文件的问价路径,下面两行为输出提示语句
                        if (filelist.length > 1) {
                            System.out.println(file.getPath()+"-----------------------------------------------------------------------------------------------------------------------------------");
                        }

                        //获取到扩展名前.在文件名中的位置
                        int beginIndex = fileName.indexOf(".");

                        //产生新文件明
                        String newFileName = parentFileName.substring(parentFileName.lastIndexOf("\\") + 1).substring(0, 4)
                                + fileName.substring(beginIndex, fileName.length());
                        //System.out.println(newFileName);

                        //调用复制文件的代码
                        copyFile(filePath, "E:" + File.separator + "car" + File.separator + newFileName, false);
                    } else if (readfile.isDirectory()) {
                        ++COUNT;
                        System.out.println(COUNT+"==================================================================================================");
                        if(!isFolerNull(readfile)) {
                            System.out.println(readfile.getPath() + "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
                        }
                        readAndCopeFile(filepath + "\\" + filelist[i]);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            System.out.println("readfile()   Exception:" + e.getMessage());
        }
        return true;
    }
   
    public static boolean isFolerNull(File f) {
        return f.list().length > 0;
    }

 

    /**
     * 复制单个文件
     *
     * @param oldPath老文件名
     * @param newPath新文件名
     */
    public static void copyFile(String oldPath, String newPath) {
        try {
            int byteread = 0;
            File oldfile = new File(oldPath);
            if (oldfile.exists()) {  //文件存在时 
                InputStream inStream = new FileInputStream(oldPath);  //读入原文件 
                FileOutputStream fs = new FileOutputStream(newPath);
                byte[] buffer = new byte[1444];
                while ((byteread = inStream.read(buffer)) != -1) {
                    fs.write(buffer, 0, byteread);
                }
                inStream.close();
            }
        } catch (Exception e) {
            System.out.println("复制单个文件操作出错");
            e.printStackTrace();
        }
    }

    /**
     * 复制单个文件
     *
     * @param srcFileName 待复制的文件名
     * @param destFileName 目标文件名
     * @param overlay 如果目标文件存在,是否覆盖
     * @return 如果复制成功,则返回true,否则返回false
     */
    public static boolean copyFile(String srcFileName, String destFileName, boolean overlay) {
        //判断原文件是否存在
        File srcFile = new File(srcFileName);
        if (!srcFile.exists()) {
            System.out.println("复制文件失败:原文件" + srcFileName + "不存在!");
            return false;
        } else if (!srcFile.isFile()) {
            System.out.println("复制文件失败:" + srcFileName + "不是一个文件!");
            return false;
        }
        //判断目标文件是否存在
        File destFile = new File(destFileName);
        if (destFile.exists()) {
            //如果目标文件存在,而且复制时允许覆盖。
            if (overlay) {
                //删除已存在的目标文件,无论目标文件是目录还是单个文件
                System.out.println("目标文件已存在,准备删除它!");

                boolean success = destFile.delete();
                if (success = false) {
                    System.out.println("复制文件失败:删除目标文件" + destFileName + "失败!");
                    return false;
                }
            } else {
                System.out.println("复制文件失败:目标文件" + destFileName + "已存在!");
                return false;
            }
        } else {
            if (!destFile.getParentFile().exists()) {
                //如果目标文件所在的目录不存在,则创建目录
                System.out.println("目标文件所在的目录不存在,准备创建它!");
                if (!destFile.getParentFile().mkdirs()) {
                    System.out.println("复制文件失败:创建目标文件所在的目录失败!");
                    return false;
                }
            }
        }
        //准备复制文件
        int byteread = 0;//读取的位数
        InputStream in = null;
        OutputStream out = null;
        try {
            //打开原文件
            in = new FileInputStream(srcFile);
            //打开连接到目标文件的输出流
            out = new FileOutputStream(destFile);
            byte[] buffer = new byte[1024];
            //一次读取1024个字节,当byteread为-1时表示文件已经读完
            while ((byteread = in.read(buffer)) != -1) {
                //将读取的字节写入输出流
                out.write(buffer, 0, byteread);
            }
            System.out.println("复制单个文件" + srcFileName + "至" + destFileName + "成功!");
            return true;
        } catch (Exception e) {
            System.out.println("复制文件失败:" + e.getMessage());
            return false;
        } finally {
            //关闭输入输出流,注意先关闭输出流,再关闭输入流
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


 

 

目录
相关文章
|
6月前
|
机器学习/深度学习 Python
删除指定文件夹重复的文件
这是一个Python脚本,用于删除指定文件夹(包括子目录)中的重复图片文件,基于文件的MD5值。程序依赖`NStudyPy`库,可通过`pip install -U NStudyPy`安装。核心函数`delete_repeat_file`接收路径和是否递归参数,调用未展示的`get_repeat_file`函数获取重复文件并删除。
54 1
|
7月前
|
弹性计算 运维 Shell
判断文件或目录是否存在
【4月更文挑战第29天】
54 0
|
JSON 数据格式
批量遍历指定类型的文件及文件夹,并将其复制到新的文件夹
批量遍历指定类型的文件及文件夹,并将其复制到新的文件夹
|
网络协议 测试技术 Go
判断文件或目录存在 | 学习笔记
快速学习判断文件或目录存在
C#编程-18:遍历某一路径下所有文件和文件夹
C#编程-18:遍历某一路径下所有文件和文件夹
527 0
|
内存技术
若某文件系统的目录结构如下图所示,假设用户要访问文件 fault.swf ,且当前工作目录为 swshare ,则该文件的全文件名为( ),相对路径和绝对路径分别为( 请在此空作答
若某文件系统的目录结构如下图所示,假设用户要访问文件 fault.swf ,且当前工作目录为 swshare ,则该文件的全文件名为( ),相对路径和绝对路径分别为( 请在此空作答
293 0
若某文件系统的目录结构如下图所示,假设用户要访问文件 fault.swf ,且当前工作目录为 swshare ,则该文件的全文件名为( ),相对路径和绝对路径分别为( 请在此空作答
|
分布式计算 Hadoop 开发者
文件和文件夹的判断| 学习笔记
快速学习文件和文件夹的判断
237 0
|
开发框架 .NET Windows
文件和文件夹的操作——获取当前路径方法
文件和文件夹的操作——获取当前路径方法
281 0
|
机器学习/深度学习 Python
查找某文件夹下所有子文件夹内的py文件-3 一行代码搞定
转自:https://mp.weixin.qq.com/s/FFXh8gRci4hMo6_gnBMPUg       工作中,有时会产生查找某一类文件的需求,比如log文件。或者在做图像类深度学习时,需要读取大类文件夹下,所有小类文件夹下的图片。
1434 0