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

简介: 这篇文章介绍了Java中使用`renameTo()`、`Files.copy()`等方法对文件进行重命名、移动和复制的操作,并提供了代码实例和测试效果。

文章目录

  • 1、文件的重命名操作
    • 1.1 renameTo()方法
    • 1.2 代码实例
    • 1.3 实际运用
    • 1.4 测试效果
  • 2、文件的移动(移动文件后、原路径下文件不存在)
    • 2.1 代码实例
    • 2.2 测试效果
  • 3、文件的复制移动(移动文件后、原路径下文件存在 )
    • 3.1 copy()方法
    • 3.2 代码实例
    • 3.3 实际运用
    • 3.4 测试效果

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 测试效果

在这里插入图片描述


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

相关文章
|
2月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
5月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
805 65
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
3月前
|
SQL JavaScript 安全
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
148 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
|
3月前
|
存储 算法 Java
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
|
3月前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
75 4
|
5月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
184 34
|
4月前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
129 0
|
Java 大数据 Apache
|
Java Windows 移动开发