java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)

412 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第三十二天,点击查看活动详情

1、文件的重命名操作

1.1 renameTo()方法

boolean renameTo(File dest) :重命名由此抽象路径名表示的文件。
参数 :dest - 命名文件的新抽象路径名 结果 :true当且仅当重命名成功; false否则

  • 第一种使用场景:文件重命名

1.2 代码实例

    //组合原始文件的绝对路径
     File fixFile = new File(PreFileDir + "/" + fixFileName);
     File newFile = new File(PreFileDir + "/" + newFileName);
     //重命名操作
     Boolean flag = fixFile.renameTo(newFile);

1.3 实际运用

package com.autobranch.ibank.TestFile;



import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class TestRemoveFile {

    private String PreFileDir = "E:\\data\\sp\\FSN";
    private String fixFileName = "zheng.txt";

    //文件重命名
    public Boolean renameFixFile(String newFileName) {

        try {
            //组合原始文件的绝对路径
            File fixFile = new File(PreFileDir + "/" + fixFileName);
            File newFile = new File(PreFileDir + "/" + newFileName);
            //重命名操作
            Boolean flag = fixFile.renameTo(newFile);
            System.out.println(newFile.exists());

            if (flag) {
                return true;
            } else {
                return false;
            }


        } catch (Exception e) {
            e.printStackTrace();
        }

        return false;
    }


    public static void main(String[] args) {
        TestRemoveFile File = new TestRemoveFile();
        Boolean flag = File.renameFixFile("zyz.txt");
        System.out.println("是否重命名成功:" + flag);
    }
}

1.4 测试效果

在这里插入图片描述 在这里插入图片描述


2、文件的移动(移动文件后、原路径下文件不存在)

renameTo(File dest): 该方法的行为的许多方面固有地依赖于平台:重命名操作可能无法将文件从一个文件系统移动到另一个文件系统,它可能不是原子的,如果具有目标抽象路径名的文件可能无法成功已经存在。 应始终检查返回值,以确保重命名操作成功。

  • renameTo的第二种使用场景:将文件从一个路径移动到另一个路径下 ,并且移动的文件进行重命名【文件移动重命名】 ==注意:移动后的文件、原始目录下是不存在的==

2.1 代码实例

package com.autobranch.ibank.TestFile;



import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class TestRemoveFile {

    private String PreFileDir = "E:\\data\\sp\\FSN";
    private String targetFileDir = "E:\\data\\sp\\zheng";
    private String fixFileName = "zheng.txt";

    //文件重命名
    public Boolean renameFixFile(String newFileName) {

        try {
            //组合原始文件的绝对路径
            File fixFile = new File(PreFileDir + "/" + fixFileName);
            File newFile = new File(PreFileDir + "/" + newFileName);
            //重命名操作
            Boolean flag = fixFile.renameTo(newFile);
            System.out.println(newFile.exists());

            if (flag) {
                //还需要将重命名的文件移动到指定的位置
                String TargetFileDir = targetFileDir + "/" + newFile.getName();
                System.out.println(TargetFileDir);

                File fixFileDir = new File(newFile.getAbsolutePath());
                File targetFileDir = new File(TargetFileDir);

                if (targetFileDir.exists()) {
                    targetFileDir.delete();
                }

                Boolean rmoveFlag = fixFileDir.renameTo(targetFileDir);
                if (rmoveFlag) {
                    System.out.println("移动成功");
                    return true;
                } else {
                    System.out.println("移动失败");
                }

            } else {
                return false;
            }


        } catch (Exception e) {
            e.printStackTrace();
        }


        return false;
    }


    public static void main(String[] args) {
        TestRemoveFile File = new TestRemoveFile();
        Boolean flag = File.renameFixFile("zyz.txt");
        System.out.println("是否重命名成功:" + flag);
    }
}

2.2 测试效果

在这里插入图片描述


在这里插入图片描述


3、文件的复制移动(移动文件后、原路径下文件存在 )

3.1 copy()方法

copy(Path source, Path target, CopyOption... options): 将文件复制到目标文件。
参数 :source - 要复制的文件的路径 。target - 目标文件的路径(可能与源路径的不同提供程序相关联) 。options - 指定副本应如何完成的选项 结果 :目标文件的路径

3.2 代码实例

    //文件移动到指定文件
    private Boolean copyFile(String filename, String oldpath, String newpath) {
        try {
            File oldPaths = new File(oldpath + "/" + filename);
            File newPaths = new File(newpath + "/" + filename);

            if (!newPaths.exists()) {
                Files.copy(oldPaths.toPath(), newPaths.toPath());
            } else {
                newPaths.delete();
                Files.copy(oldPaths.toPath(), newPaths.toPath());
                return true;
            }

        } catch (IOException e) {
            e.printStackTrace();

        }
        return false;
    }

3.3 实际运用

package com.autobranch.ibank.TestFile;



import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class TestRemoveFile {

    private String PreFileDir = "E:\\data\\sp\\FSN";
    private String targetFileDir = "E:\\data\\sp\\zheng";
    private String fixFileName = "zheng.txt";

    //文件移动到指定文件
    private Boolean copyFile(String filename, String oldpath, String newpath) {
        try {
            File oldPaths = new File(oldpath + "/" + filename);
            File newPaths = new File(newpath + "/" + filename);

            if (!newPaths.exists()) {
                Files.copy(oldPaths.toPath(), newPaths.toPath());
            } else {
                newPaths.delete();
                Files.copy(oldPaths.toPath(), newPaths.toPath());
                return true;
            }

        } catch (IOException e) {
            e.printStackTrace();

        }
        return false;
    }

    //文件重命名
    public Boolean renameFixFile(String newFileName) {

        try {
            //组合原始文件的绝对路径
            File fixFile = new File(PreFileDir + "/" + fixFileName);
            File newFile = new File(PreFileDir + "/" + newFileName);
            //重命名操作
            Boolean flag = fixFile.renameTo(newFile);
            System.out.println(newFile.exists());

            if (flag) {


//                调用方法进行复制移动
               Boolean copyFlag = this.copyFile(newFileName,PreFileDir,targetFileDir);
               if(copyFlag){
                   System.out.println("移动成功");
                   return true;
               }else{
                   return false;
               }


            } else {
                return false;
            }


        } catch (Exception e) {
            e.printStackTrace();
        }


        return false;
    }


    public static void main(String[] args) {
        TestRemoveFile File = new TestRemoveFile();
        Boolean flag = File.renameFixFile("zyz.txt");
        System.out.println("是否重命名成功:" + flag);
    }
}

3.4 测试效果

在这里插入图片描述


在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

阿里代码规范

1.1.1 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束

1.1.2 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式

1.1.3 / 1.1.4 类名使用UpperCamelCase风格,必须遵从驼峰形式(某些情况诸如领域模型相关的命名除外);方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格,必须遵从驼峰形式

1.1.5 常量命名全部大写,单词间用下划线隔开

1.1.9 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词

1.1.6 抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以它要测试的类的名称开始,以Test结尾

1.1.13 对于Service和DAO类,基于SOA的理念,暴露出来的服务一定是接口,内部的实现类用Impl的后缀与接口区别

1.1.13 如果是形容能力的接口名称,取对应的形容词做接口名 1.1.14 枚举类名建议带上Enum后缀,枚举成员名称需要全大写,单词间用下划线隔开

1.1.11 如果使用到了设计模式,建议在类名中体现出具体模式

1.1.9 包名统一使用单数形式;类名如果有复数含义,类名可以使用复数形式

1.2.1 不允许出现任何魔法值(即未经定义的常量)直接出现在代码中

1.2.3 不要使用一个常量类维护所有常量,应该按常量功能进行归类,分开维护

1.2.4 常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量