You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

文件复制至其他位置触发InvalidPathException的原因及解决方法

问题分析与解决方法

错误原因

你的代码触发InvalidPathException的核心原因是:Windows系统文件名不允许包含冒号(:)。你用"dd-M-yyyy hh:mm:ss"格式生成日期字符串,导致目标文件名里出现了冒号,违反了Windows的文件命名规则。另外目标文件路径开头还有个多余空格,也会干扰路径识别。

修复方案

  1. 修改日期格式化规则,把时间部分的冒号替换为Windows允许的字符(如下划线_)
  2. 移除目标路径开头的多余空格
  3. (可选)遵循Java变量命名规范,将大写开头的Date改为小写date

修改后的代码示例

public void Copy() {
    try {
        // 将时间格式中的冒号替换为下划线,避免非法字符
        String date = new SimpleDateFormat("dd-M-yyyy hh_mm_ss").format(new Date());

        File sourceFile = new File("D:\\DOFN Materials\\App\\LMSystem\\LMSystem.sqlite"); // db path

        // 移除路径开头的多余空格
        File destinationFile = new File("D:\\DOFN Materials\\App\\LMSystem\\Copy\\back"+date+"_"+"LMSystem");
        
        Files.copy(sourceFile.toPath(), destinationFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
        System.out.println("file is copied");
        JOptionPane.showMessageDialog(null, date + "  Copy Successfully !!");
    } catch (IOException ex) {
        Logger.getLogger(About.class.getName()).log(Level.SEVERE, null, ex);
    }
}

额外注意事项

Windows系统文件名禁止使用的字符包括:< > : " / \ | ? *,生成动态文件名时必须确保避开这些字符。

内容的提问来源于stack exchange,提问作者Zshanax Cag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:25:15