使用java安全的移动文件

发布时间:2026/9/25 20:48:39
使用java安全的移动文件 File.renameTo()在 Windows跨磁盘 / 跨分区移动一定会失败C 盘→D 盘。 下面提供 JDK 原生 NIO 实现的可靠移动工具逻辑复制完整文件 → 校验大小 → 删除源文件兼容同盘、跨分区、网络目录。 增加异常重试、自动关闭流防止文件句柄泄漏。import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; /** * Windows可靠跨分区移动文件 * param sourceFile 源文件 * param targetDirPath 目标文件夹路径文件夹不存在自动创建 * return true 移动成功false失败 */ private boolean moveFileSafe(File sourceFile, String targetDirPath) { if (!sourceFile.exists() || !sourceFile.isFile()) { System.err.println(源文件不存在: sourceFile.getAbsolutePath()); return false; } Path sourcePath sourceFile.toPath(); File targetDir new File(targetDirPath); // 目标目录不存在自动创建 if (!targetDir.exists()) { targetDir.mkdirs(); } // 构建目标完整路径 Path targetPath Paths.get(targetDir.getAbsolutePath(), sourceFile.getName()); // 如果目标同名文件存在可选策略覆盖 / 重命名这里选择【覆盖】 try { // Files.move 底层优先尝试rename同盘瞬间完成跨盘会自动复制删除 Files.move(sourcePath, targetPath, java.nio.file.StandardCopyOption.REPLACE_EXISTING); return true; } catch (IOException e) { System.err.println(NIO move直接失败降级为【复制文件删除源文件】方案: sourceFile); try { // 降级方案复制 Files.copy(sourcePath, targetPath, java.nio.file.StandardCopyOption.REPLACE_EXISTING); // 校验文件大小一致 long srcSize sourceFile.length(); long destSize new File(targetPath.toString()).length(); if (srcSize destSize srcSize 0) { // 复制成功删除源文件 Files.delete(sourcePath); return true; } else { System.err.println(文件复制后大小不一致放弃删除源文件); // 清理不完整目标文件 Files.deleteIfExists(targetPath); return false; } } catch (IOException ex) { System.err.println(文件移动最终失败); ex.printStackTrace(); return false; } } }

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询