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

在这里插入图片描述


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

相关文章
|
12天前
|
Java
Java“解析时到达文件末尾”解决
在Java编程中,“解析时到达文件末尾”通常指在读取或处理文件时提前遇到了文件结尾,导致程序无法继续读取所需数据。解决方法包括:确保文件路径正确,检查文件是否完整,使用正确的文件读取模式(如文本或二进制),以及确保读取位置正确。合理设置缓冲区大小和循环条件也能避免此类问题。
|
4天前
|
Java
Java开发如何实现文件的移动,但是在移动结束后才进行读取?
【10月更文挑战第13天】Java开发如何实现文件的移动,但是在移动结束后才进行读取?
13 2
|
4天前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
12 1
|
4天前
|
监控 Java
Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
【10月更文挑战第13天】Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
16 1
|
8天前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
21 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
13天前
|
消息中间件 Java 大数据
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
47 2
|
16天前
|
XML JavaScript Java
java与XML文件的读写
java与XML文件的读写
16 3
|
设计模式 Java
【玩转23种Java设计模式】学习目录汇总整理
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
【玩转23种Java设计模式】学习目录汇总整理
|
安全 Java
Java学习目录
基础 Java 比较器Comparator和Comparable的使用和区别 进制、移位 Java 移位运算详解(2进制+原码+反码+补码) Thread线程 Java Thread线程使用、线程安全(一) ...
867 0
|
4天前
|
安全 Java UED
Java中的多线程编程:从基础到实践
本文深入探讨了Java中的多线程编程,包括线程的创建、生命周期管理以及同步机制。通过实例展示了如何使用Thread类和Runnable接口来创建线程,讨论了线程安全问题及解决策略,如使用synchronized关键字和ReentrantLock类。文章还涵盖了线程间通信的方式,包括wait()、notify()和notifyAll()方法,以及如何避免死锁。此外,还介绍了高级并发工具如CountDownLatch和CyclicBarrier的使用方法。通过综合运用这些技术,可以有效提高多线程程序的性能和可靠性。