我在我的程序中使用了 Files.move 方法,如下所述。 public boolean moveAndRenameFile(String targetPath, String newName) { boolean fileMoved = true; try { Path pathToFile = FileSystems.getDefault().getPath(targetPath); Files.move(Paths.get(path), pathToFile.resolve(newName), StandardCopyOption.REPLACE_EXISTING); } catch (InvalidPathException | IOException e) { LOGGER.error("File couldn't be moved from {} to target location {}", path, targetPath); LOGGER.error(e.getMessage(), e); fileMoved = false; } return fileMoved; }如果中間發(fā)生任何異常/錯(cuò)誤,是否有可能從原始位置刪除文件但不移動(dòng)到目標(biāo)位置?我瀏覽了以下鏈接,但找不到這個(gè)問(wèn)題的答案。 https://docs.oracle.com/javase/tutorial/essential/io/move.html
2 回答

繁星淼淼
TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
在該過(guò)程完成之前,原始(源)文件不會(huì)被刪除。但是不完整/損壞的文件將保存在目標(biāo)中。
您可以通過(guò)自己做一個(gè)小測(cè)試來(lái)確認(rèn)這一點(diǎn)。將文件移動(dòng)到可移動(dòng)磁盤并在該過(guò)程結(jié)束之前拔下可移動(dòng)設(shè)備。

www說(shuō)
TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
對(duì)于同一個(gè)存儲(chǔ)提供者,它使用原生移動(dòng)。
否則它會(huì)做一個(gè)
copyToForeignTarget(...); Files.delete(source);
所以不會(huì)有問(wèn)題。
添加回答
舉報(bào)
0/150
提交
取消