Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在文件上使用重命名更改内容_Java_Android_Path_Directory - Fatal编程技术网

Java 在文件上使用重命名更改内容

Java 在文件上使用重命名更改内容,java,android,path,directory,Java,Android,Path,Directory,假设/dir1/包含5个文件。此代码将打印0。但是,如果我将代码更改为` File dir = new File(getFilesDir(), "dir1"); dir.renameTo(new File(getFilesDir(), "dir2"); Log.d("Number of files:", dir.listFiles().length); 它将打印正确的值:5。这有什么原因吗?在我使用renameTo之后,dir似乎没有链接到同一个目录。原因是在您的第一个代码中,dir仍然指向目

假设/dir1/包含5个文件。此代码将打印0。但是,如果我将代码更改为`

File dir = new File(getFilesDir(), "dir1");
dir.renameTo(new File(getFilesDir(), "dir2");
Log.d("Number of files:", dir.listFiles().length);

它将打印正确的值:5。这有什么原因吗?在我使用renameTo之后,dir似乎没有链接到同一个目录。

原因是在您的第一个代码中,dir仍然指向目录
dir1
,而不是
dir2

但是,在以下代码中:

File dir = new File(getFilesDir(), "dir1");
dir.renameTo(new File(getFilesDir(), "dir2");
dir = new File(getFilesDir(), "dir2");
Log.d("Number of files:", dir.listFiles().length);
dir
现在指向
dir2
,因此您得到了正确的值

我建议您避免使用Java的File.renameTo(),因为它有问题,尤其是在Windows上。正如API文档所述:

此方法行为的许多方面都是固有的 平台相关:重命名操作可能无法移动 从一个文件系统到另一个文件系统,它可能不是原子的,而且 如果文件的目标抽象路径名为 已经存在。应始终检查返回值以确保 重命名操作已成功


您可以使用apache.commons.io库,其中包括FileUtils.moveFile()或JDK 7中的Files.move()方法。

原因是在第一个代码中,dir仍然指向目录
dir1
,而不是
dir2

但是,在以下代码中:

File dir = new File(getFilesDir(), "dir1");
dir.renameTo(new File(getFilesDir(), "dir2");
dir = new File(getFilesDir(), "dir2");
Log.d("Number of files:", dir.listFiles().length);
dir
现在指向
dir2
,因此您得到了正确的值

我建议您避免使用Java的File.renameTo(),因为它有问题,尤其是在Windows上。正如API文档所述:

此方法行为的许多方面都是固有的 平台相关:重命名操作可能无法移动 从一个文件系统到另一个文件系统,它可能不是原子的,而且 如果文件的目标抽象路径名为 已经存在。应始终检查返回值以确保 重命名操作已成功

您可以使用apache.commons.io库,其中包括FileUtils.moveFile()或JDK 7中的Files.move()方法