使用FileUtils.copyFile复制文件 admin 2023-01-30 17:54:01 篇首语:本文由小编为大家整理,主要介绍了使用FileUtils.copyFile复制文件相关的知识,希望对你有一定的参考价值。 Ns.jSZHUoeR.COm我试图使用文件utils复制文件方法复制文件。我正在遇到一些有时会抛出异常的问题java.io.IOException: Failed to copy full contents from "path.xml" to localfile.xml我已经google搜索并在代码中看到当目标文件长度与目标文件长度不同时抛出此异常,异常仅发生一些时间 - 这可能是由于我尝试复制的文件是一致的更新,所以我可能会在更新中捕获它(只是一个值更改的xml文件)Ns.jSZHUoeR.COm如果我用if(target.canRead())包裹这个电话,但这似乎没什么区别。有人可以帮忙吗?*更新:*我无法锁定文件,因为它是通过第三方供应商写入的,这会导致各种问题。 答案我不确定如何在您的项目中实现该体系结构,但您应该在该文件上有一个锁定机制。Ns.jSZHUoeR.COm当某人写入文件时,应将其锁定。并且你不应该在写入时复制它,即它被锁定。FileInputStream in = new FileInputStream(file);try { java.nio.channels.FileLock lock = in.getChannel().lock(); try { Reader reader = new InputStreamReader(in, charset); ... } finally { lock.release(); }} finally { in.close();}有关如何在java中锁定文件,请参阅此问题here。UPDATENs.jSZHUoeR.COm然后你没有选择,只能自己实现复制方法或使用没有类似检查的库。你可以看到FileUtils的代码如果文件在复制期间发生更改,则会出错。 if (srcFile.length() != destFile.length()) { throw new IOException("Failed to copy full contents from "" + srcFile + "" to "" + destFile + """); } 另一答案我使用Java 7中的文件解决了同样的问题(使用大文件):Ns.jSZHUoeR.COmFile srcFile = ...File destFile = ...File directory = ...if (!Files.exists(directory.toPath())) { // use forceMkdir to create parent directory FileUtils.forceMkdir(directory);}Files.copy(srcFile.toPath(), new FileOutputStream(destFile)); 另一答案正如您所说,在复制过程中文件可能会更新,因此您应该要求对要复制的文件进行文件锁定。我建议阅读this question以获得有关如何使用FileLock的详细信息。 以上是关于使用FileUtils.copyFile复制文件的主要内容,如果未能解决你的问题,请参考以下文章 Vue中table合并单元格用法 Python中serial的使用 您可能还会对下面的文章感兴趣: 相关文章 商丘私人空放联系方式_基本资料审核后快速就能放款平台 济宁私人借钱24小时在线,5万以上级别的贷款|无抵押个人借贷|秒下| 湖州空放私借2小时放款—身无分文借贷100%直接放款 宜昌纯私人放款微信电话——马上为您安排信贷服务+当日到账 蚌埠24小时私人放款联系方式随借随到-做生意借贷|应急周转|大额优先| 遵义空放借钱贷款联系电话:走投无路申请放款马上就到账 绵阳专业空放贷款私人联系方式,不看过往|先贷后放|马上拿钱| 德州附近个人放款电话号码多少:不审核+随借随还+当日成功+直接到账