Java File中renameTo的介绍和使用说明-程序员宅基地

看到项目中有个地方用的File的renameTo这个方法,本以为这个方法就是用来文件重命名的,但是项目中确用它来进行文件的移动。就是使用renameTo将一个文件从一个目录移动另一个目录下!

下面就简单介绍一下renameTo,并整理一个renameTo的使用!

renameTo的介绍

官方文档说明

/**
 * 
 重新命名此抽象路径名表示的文件。
 此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从
 一个文件系统移动到另一个文件系统,
 该操作不是不可分的,如果已经存在具有目标抽象路径名的文件,
 那么该操作可能无法获得成功。应该始终检查返回值,以确保重命名操作成功。

 参数:
 dest - 指定文件的新抽象路径名
 返回:
 当且仅当重命名成功时,返回 true;否则返回 false
 抛出:
 SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对原路径名和新路径名进行写访问
 NullPointerException - 如果参数 dest 为 null
 */
public boolean renameTo(File dest) {
    
        SecurityManager security = System.getSecurityManager();
        if (security != null) {
    
            security.checkWrite(path);
            security.checkWrite(dest.path);
        }
        if (dest == null) {
    
            throw new NullPointerException();
        }
        if (this.isInvalid() || dest.isInvalid()) {
    
            return false;
        }
        return fs.rename(this, dest);
    }

解释一下官方文档说明

重新命名此抽象路径名表示的文件。

主要功能是重命名文件的!

此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从一个文件系统移动到另一个文件系统,该操作不是不可分的

1、文件可以进行移动;2、在同一平台操作

如果已经存在具有目标抽象路径名的文件,那么该操作可能无法获得成功。应该始终检查返回值,以确保重命名操作成功。

1、如果目标路径下有相同的文件名称,则命名失败(或者移动失败);2、实际开发中要注意返回值,为true则表示命名(移动)成功!

renamTo使用说明

第一种场景:同一路径下文件重命名【文件重命名】

说明:将E:\hello\test\1.txt下的 1.txt 重名为2.txt !
如果test路径下1.txt 不存在,那么返回false。

		File oldName = new File("E:\\hello\\test\\1.txt");
        File newName = new File("E:\\hello\\test\\2.txt");
        System.out.println(oldName.renameTo(newName));//true

第二种场景:将文件从一个路径移动另一个路径下,并且移动的文件进行重命名【文件移动重命名】

说明:将E:\hello\test\1.txt下的 1.txt 移动到E:\hello1\test1\路径下,并重名命名为2.txt .
其中 E:\hello1\test1必须要存在,否则返回false 。

File oldName = new File("E:\\hello\\test\\1.txt");
        File newName = new File("E:\\hello1\\test1\\2.txt");
        System.out.println(oldName.renameTo(newName));//true

第三种场景:修改文件夹的名称,文件夹里面没有文件的时候修改成功!

说明:修改文件夹名称,这个目录必须存在 E:\hello\dufy。
其中如果 E:\hello\dufy 这个目录不为空,返回false。

File oldNamed = new File("E:\\hello\\dufy");
        File newNamed = new File("E:\\hello\\dufy_fly");
        System.out.println(oldNamed.renameTo(newNamed)); //true

总结

renameTo 可以重命名文件,也可以进行文件的移动操作!

在实际的开发中一般可以用于移动文件,比如 日志文件的备份,将每天的日志文件定时扫描移动到 一个备份文件下。可以使用场景2,如 love.log —> love.2017-10-24.log!

————————————————
版权声明:本文为CSDN博主「阿飞云」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010648555/article/details/78356040

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43897590/article/details/116142261

智能推荐

flash白板功能_flash 白板-程序员宅基地

文章浏览阅读3.5k次。Flash Communication Server相关Flash Communication Server的十大功能作者: Kyle 11/21/02 内容: 1.建立截然不同的应用程序透过Macromedia Flash Communication Server ,您可以在网站内容中建立和整合出全新型态的互动功能和用户体验。您可以轻易地在网站和应用程序中,增加像聊天室、串流视讯、多_flash 白板

MySQL入门相关命令语句(命令行操作)建库、建表以及表中字段操作等相关命令_数据库怎么定义表的字段命令行-程序员宅基地

文章浏览阅读302次。1、首先,为了保证数据库的安全性,我们在安装数据库的时候都会设置密码,我们根据自己的设置进行身份验证,连接本地数据库服务器:方式一:如果你想要看到你自己输入的密码,直接在p后面输入即可,反之直接回车进行输入mysql -uroot -p方式二:如果仅仅是访问自己电脑上的mysql建议用方式一,比较简单,但是如果你想要访问其他电脑上配置的mysql服务,就需要在-h后输入该电脑的ip,-P后..._数据库怎么定义表的字段命令行

我要犯的错误太多了,时间太少了……捕获StandardError和StandardOutput-程序员宅基地

文章浏览阅读432次。This struck me as particularly interesting, because it's one of those "doh!" things that is simultaneously completely obvious after the fact but not obvious on a cursory glance if you're not paying at...

JS 实现加载效果_js加载效果-程序员宅基地

文章浏览阅读727次。<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>加载效果</title> <style type="text/css"> * { padding: 0; margin: 0; } #progressbar { position: fixed; left: 0; right: 0;._js加载效果

jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令_jmap dump内存的命令-程序员宅基地

文章浏览阅读3.9w次,点赞6次,收藏88次。公司内部同事分享的一篇文章 周末看到一个用jstack查看死锁的例子。昨天晚上总结了一下jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令。供大家参考 1.Jstack 1.1 jstack能得到运行java程序的java stack和native stack的信息。可以轻松得知当前线程的运行情况。如下图所示 注:这个和thread dum_jmap dump内存的命令

C#常用输出格式_c# 输出格式-程序员宅基地

文章浏览阅读4.9k次,点赞8次,收藏51次。输出方法Console. WriteLine( )Console. WriteLine()方法将数据输出到屏幕并加上一个回车换行符(若不加回车换行符,可用Console. Write()方法)。该方法类似于C语言中的printf()函数,可以采用“{N[,M][:格式化字符串]}”的形式格式化输出字符串,其中的参数含义如下。①花括号({}): 用来在输出字符串中插人变量的值。②N:表示..._c# 输出格式

随便推点

django-redis Error 111 connecting to 127.0.0.1:6379.-程序员宅基地

文章浏览阅读1.1k次。在 setting.py 中设置完了 django-redis 之后,在 view.py 中使用出现 error:Error 111 connecting to 127.0.0.1:6379.-> 参考出现这个问题是因为服务器中的 redis sercive 没找到或者没开启如果没安装服务器的话,安装 redis-serverUbuntu: sudo apt-get in..._sentry.exceptions.invalidconfiguration: error 111 connecting to 127.0.0.1:63

OpenGL基础-程序员宅基地

文章浏览阅读164次。20' 抛物面,法向量 10' 抛物面 #define DELTA 0.1 #define PI2 2*3.14159 double parabolicSurf[36][10][3]; void MakeParabolicSurface() { for (int a = 0; a < 36; a++) { for (int ..._在自由端约束条件下计算hermite样条曲线

linux文件系统查看目录,Linux文件系统目录结构-程序员宅基地

文章浏览阅读284次。8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?本文以CentOS系统为例,但同样适用于Linux的其他发行版。不需要纠结于具体的版本,了解设计意图即可。本文随时更新。除勘误外,不另做批注。圆型节点代指目录,方型节点代指文件。图中省去了很多不常用的目录与文件。稍后单独讲/proc目录与/var目录。Linux将整个文件系统看做一棵树,这棵树的树根叫做根文件系统,用”/..._查看/user/root/txtdir目录结构

将华氏温度转换成摄氏温度_android studio怎么将华氏温度转换为摄氏度-程序员宅基地

文章浏览阅读3.4k次。写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32其中C表示摄氏温度,F表示华氏温度。程序的输入是一个整数,表示华氏温度。输出对应的摄氏温度,也是一个整数。提示,为了把计算结果的浮点数转换成整数,需要使用下面的表达式: (int)x;其中x是要转换的那个浮点数。输入格式:_android studio怎么将华氏温度转换为摄氏度

串行通信/并行通信和UART、SPI、I2C、USB以及TTL、CMOS、RS-232、RS-485区别详细整理_串口与usb,spi通信有啥区别-程序员宅基地

文章浏览阅读1.8w次,点赞23次,收藏222次。串行通信/并行通信和UART、SPI、I2C、USB以及TTL、RS-232、RS-485区别详细整理串行通信/并行通信和UART口/USB口以及TTL、RS-232、RS-485这些和通信相关的名词我们做电子的每天都在接触,但是如果不认真整理,我想很多人都不知道这些名词的具体含义和区别,因为我项目中刚好需要用到UART传输数据,所以就打算用这篇文章好好的归纳一下这些磨人的“通信名词”关于串行..._串口与usb,spi通信有啥区别

【记录】easyexcel导出后打开文件报已损坏_导出exel,本地好使,服务器显示文件损坏-程序员宅基地

文章浏览阅读6.2k次。本地导出excel没问题,在linux服务器导出的excel文件是损坏的。1、导出数据可能是空的。2、linux 下可能没有权限创建临时文件,赋权限chmod 777 就可以了_导出exel,本地好使,服务器显示文件损坏