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

在这里插入图片描述


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

相关文章
|
11天前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
102 1
|
3月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
|
3月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
223 0
|
3月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
221 14
|
4月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
373 5
|
4月前
|
网络协议 安全 Java
实现Java语言的文件断点续传功能的技术方案。
像这样,我们就完成了一项看似高科技、实则亲民的小工程。这样的技术实现不仅具备实用性,也能在面对网络不稳定的挑战时,稳稳地、不失乐趣地完成工作。
267 0
|
7月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
设计模式 Java
【玩转23种Java设计模式】学习目录汇总整理
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
【玩转23种Java设计模式】学习目录汇总整理
|
安全 Java
Java学习目录
基础 Java 比较器Comparator和Comparable的使用和区别 进制、移位 Java 移位运算详解(2进制+原码+反码+补码) Thread线程 Java Thread线程使用、线程安全(一) ...
922 0
|
11天前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
56 1