Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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 当Files.move()失败时会发生什么?_Java - Fatal编程技术网

Java 当Files.move()失败时会发生什么?

Java 当Files.move()失败时会发生什么?,java,Java,正如标题所示,如果Files.move(src,target,REPLACE_existing)失败,我想知道是否可以更改现有的目标文件?如果move()成功,目标文件会被完全覆盖吗?或者即使move()失败,目标文件也会被部分覆盖。我刚刚找到答案 当移动作为非原子操作执行,并引发IOException时,则不会定义文件的状态。原始文件和目标文件可能都存在,目标文件可能不完整,或者其某些文件属性可能未从原始文件复制 我刚刚找到答案 当移动作为非原子操作执行,并引发IOException时,则不会

正如标题所示,如果
Files.move(src,target,REPLACE_existing)
失败,我想知道是否可以更改现有的目标文件?如果
move()
成功,目标文件会被完全覆盖吗?或者即使
move()
失败,目标文件也会被部分覆盖。

我刚刚找到答案

当移动作为非原子操作执行,并引发
IOException
时,则不会定义文件的状态。原始文件和目标文件可能都存在,目标文件可能不完整,或者其某些文件属性可能未从原始文件复制

我刚刚找到答案

当移动作为非原子操作执行,并引发
IOException
时,则不会定义文件的状态。原始文件和目标文件可能都存在,目标文件可能不完整,或者其某些文件属性可能未从原始文件复制


更安全的做法是先复制文件,然后删除文件。@Gilbert这不取决于此吗?例如,如果目标在同一个驱动器上,那么指针(或您称之为指针的任何东西)不是简单地改变了,并且没有实际发生数据传输吗?在这种情况下,执行“复制然后删除”操作的成本会更高,并且会增加出错的机会,不是吗?@Slaw,这是有道理的。但不确定move()的实际工作原理,也没有找到任何关于细节的文档。
java.nio.file
API的许多方面都没有说明,因为它必须尽可能保持抽象。由于并非每个文件系统的行为方式都完全相同,因此无法获得更详细的信息。更不用说
文件系统[Provider]
实现不必与“真实的”本机文件系统交互;例如,有一个ZIP文件系统Provider,它允许访问ZIP文件,就好像它们是一个文件系统一样,而且还可以将所有内容都保存在内存中。虽然每个平台的实现都不同,但Windows实现是在中的,它最终调用,它最终从win32 API调用。不过,这些都是实现细节。更安全的做法是先复制文件,然后删除文件。@Gilbert这不取决于它吗?例如,如果目标在同一个驱动器上,那么指针(或您称之为指针的任何东西)不是简单地改变了,并且没有实际发生数据传输吗?在这种情况下,执行“复制然后删除”操作的成本会更高,并且会增加出错的机会,不是吗?@Slaw,这是有道理的。但不确定move()的实际工作原理,也没有找到任何关于细节的文档。
java.nio.file
API的许多方面都没有说明,因为它必须尽可能保持抽象。由于并非每个文件系统的行为方式都完全相同,因此无法获得更详细的信息。更不用说
文件系统[Provider]
实现不必与“真实的”本机文件系统交互;例如,有一个ZIP文件系统Provider,它允许访问ZIP文件,就好像它们是一个文件系统一样,而且还可以将所有内容都保存在内存中。虽然每个平台的实现都不同,但Windows实现是在中的,它最终调用,它最终从win32 API调用。然而,这些是实现细节。