重命名使用
首先从直观上看这个方法是重命名 比如把D:/test/123.zip 更改为456.zip
@Test
public void rename(){
File srcFile = new File("D:/test/123.zip");
boolean b = srcFile.renameTo(new File("D:/test/456.zip"));
System.out.println(b);
}
运行结果自然是true 没问题的
移动文件使用
这个方法也有很多人用来 进行文件的移动 比如这样 把D盘的文件移动到E盘
File srcFile = new File("D:/test/123.zip"); boolean b = srcFile.renameTo(new File("E:/test/456.zip"));
但是有一个问题 如果你用来移动文件有可能是不成功的 或者说 在本地windows环境没问题但是到了liunx就不行。
本人就碰到过!
为什么会出现这样呢?
原因我是从这里看到的 这篇文章
总结一句话 就是 两个文件的文件系统不一致 所以不能单纯的当做移动文件来使用 会存在风险的!
解决文件移动的办法
可以使用 jar包 commons-io 中的 FileUtils.copyFile 这个方法 这样就能把文件复制到指定的地方 然后再删除原文件就可以了。
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
@Test
public void copyFile() throws IOException {
// 要移动的文件
File srcFile = new File("D:/test/123.zip");
// 目标文件
File destFile = new File("G:/test/666.zip");
org.apache.commons.io.FileUtils.copyFile(srcFile,destFile);
// 最后 如果不想要源文件删除就行
srcFile.delete();
}