将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;
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();
                }
            }
        }
    }
}

 

 

时间: 2024-11-01 09:40:25

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

Python和perl实现批量对目录下电子书文件重命名的代码分享_python

经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名: 例如: python代码如下: 复制代码 代码如下: import os import re def rename_dir(dir,regex,f):   if not os.path.isdir(dir) or not os.path.exists(dir) :     print("The input is not one directory or

Win7系统下如何进行照片批量重命名?

  Win7系统的用户如果需要整理大批量的照片,怎样对照片进行批量重命名呢? Win7系统支持强大的多媒体功能,对于照片的浏览.管理.处理等功能都远比之前的WinXP和Vista系统更强大,也许你使用Win7系统很久了还没有发现它对照片管理的方便之处,比如上文刚刚提到的对大量照片的重命名操作,方法如下: 一般来说,我们从数码相机中导出的照片都是以日期和时间来自动命名的,因此管理照片的时候有时候不大方便,但如果我们把照片名改成此次旅游的目的地,比如厦门之行001.厦门之行002等,这样就能很容易管

win7旗舰版怎么能同时重命名多个文件

  不少用户都知道,在ghost win7中如果要命名一个文件,是绝对不可以出现重命名的,否则系统就会自动提示说需要重新命名.实际上,只要通过一些技巧的设置,在win7旗舰版中一样可以实现多个文件的同时重命名的,这是win7旗舰版的操作技巧之一,今天小编就来给大家简单介绍下吧! 很多人都非常疑惑,为什么要在win7旗舰版进行文件的同时重命名呢?这是因为,我们在工作或者学习的时候,需要保存一个系列的文件,那么当我们需要同时保存多个文件的时候,最好的方式就是采用同时重命名,这样能够帮助我们更好的管理

Java 实现文件批量重命名亲测可用(精简版)_java

之前在网上下载了很多视频,解压缩后,发现里面每个文件前面都有一长串的网址,导致我根本看不清每个视频的名字到底叫什么? 网上搜了一些批量重命名的方法,可都不是我想要的,既然这样,干脆自己动手用Java写一个吧.测了一下应该没问题,现在分享出来. 先上代码: import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; /** * 重命名规则类 * @author ja

显示目录下所有的文件(含文件夹)

显示   <%    set A=server.createobject("scripting.filesystemobject")    path="G:\count\0"    i=0    response.write "主目录:<br>"&path&"<ul>"    re    response.write "</li></ul>&quo

PHP遍历某个目录下的所有文件和子文件夹的实现代码

本篇文章是对PHP遍历某个目录下的所有文件和子文件夹的实现代码进行了详细的分析介绍,需要的朋友参考下   复制代码 代码如下: <?php function read_all_dir ( $dir ) { $result = array(); $handle = opendir($dir); if ( $handle ) { while ( ( $file = readdir ( $handle ) ) !== false ) { if ( $file != '.' && $file

Python批量重命名同一文件夹下文件的方法

  本文实例讲述了Python批量重命名同一文件夹下文件的方法.分享给大家供大家参考.具体分析如下: 朋友发了一个文件夹过来,里面的图片都以 .tmp 为后缀. 手工修改的话工作量太大.故写了一个 Python 脚本进行批量重命名. 对 Python 的标准库不熟,只能边查资料,或者 help() 边写代码. 三行代码就可以解决这一问题. 不过没有捕获异常.不能迭代同一目录下的所有文件. 代码如下: ? 1 2 3 4 import os for file in os.listdir(".&qu

linux shell 遍历指定目录下的所有文件夹

在linux 中,如何遍历指定目录下的所有文件夹呢? 要求能搜索结果中包含隐藏文件夹 脚本名:ergodic_folder.sh 脚本内容: Shell代码   #!/bin/sh   list_alldir(){       for file2 in `ls -a $1`       do           if [ x"$file2" != x"." -a x"$file2" != x".." ];then       

怎样扫描D盘所有目录下的文件找出mp4格式的

问题描述 怎样扫描D盘所有目录下的文件找出mp4格式的 我要做一个模仿酷狗的音乐窗体,怎样扫描D盘所有目录下的文件找出mp4.MP3格式的求大神帮帮忙!跪谢! 解决方案 什么语言?C#用 Directory.GetFiles 解决方案二: 能不能具体的?有代码吗? 解决方案三: Directory.GetFiles 怎么用? 解决方案四: https://msdn.microsoft.com/zh-cn/library/wz42302f.aspx