cad的创建时间和修改时间怎么设置?三个修改时间属性的方法

Java 修改 CAD 文件创建时间的代码实现

CAD 文件(如.dwg)的创建时间、修改时间等元数据存储在文件的属性或 DWG 格式的内部结构中,以下提供两种实用方案:修改文件系统层面的创建时间 (通用)和解析 DWG 元数据修改内部创建时间(精准),新手也能快速上手。

前置说明
  1. 核心依赖
    • 修改文件系统属性:JDK 自带 API 即可,无需额外依赖;
    • 解析 DWG 元数据:需引入第三方库(dwgreader,轻量且易用)。
  2. CAD 文件类型.dwg是 AutoCAD 专属格式,.dxf是通用文本格式(修改更简单),以下代码优先适配.dwg

方案 1:修改文件系统层面的创建 / 修改时间(通用)

适用于只需修改操作系统显示的文件属性(如 Windows 右键 "属性" 里的创建时间),无需解析 DWG 内部结构,操作简单。

完整代码
复制代码
import java.io.File;
import java.nio.file.Files;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 修改CAD文件(DWG/DXF)的文件系统创建/修改时间
 */
public class CadFileTimeModifier {
    // 日期格式化(适配常见时间格式)
    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 修改文件的创建时间、最后修改时间
     * @param cadFilePath CAD文件路径(如:D:/test.dwg)
     * @param targetTime 目标时间(格式:yyyy-MM-dd HH:mm:ss)
     * @return 是否修改成功
     */
    public static boolean modifyCadFileTime(String cadFilePath, String targetTime) {
        File cadFile = new File(cadFilePath);
        // 校验文件是否存在
        if (!cadFile.exists()) {
            System.out.println("错误:CAD文件不存在 → " + cadFilePath);
            return false;
        }

        try {
            // 1. 解析目标时间为FileTime(Java文件属性专用格式)
            Date targetDate = DATE_FORMAT.parse(targetTime);
            FileTime fileTime = FileTime.fromMillis(targetDate.getTime());

            // 2. 修改文件最后修改时间(所有系统都支持)
            cadFile.setLastModified(targetDate.getTime());

            // 3. 修改文件创建时间(不同系统适配)
            BasicFileAttributes attrs = Files.readAttributes(cadFile.toPath(), BasicFileAttributes.class);
            // Windows系统:修改creationTime
            Files.setAttribute(cadFile.toPath(), "creationTime", fileTime);
            // Linux/Mac系统:修改birthTime(可选,根据系统调整)
            // Files.setAttribute(cadFile.toPath(), "birthTime", fileTime);

            System.out.println("修改成功!文件:" + cadFilePath + " → 目标时间:" + targetTime);
            return true;

        } catch (ParseException e) {
            System.out.println("错误:时间格式解析失败,请使用 yyyy-MM-dd HH:mm:ss → " + e.getMessage());
            return false;
        } catch (Exception e) {
            System.out.println("错误:修改文件时间失败 → " + e.getMessage());
            return false;
        }
    }

    // 测试示例
    public static void main(String[] args) {
        // 示例:修改D盘的test.dwg文件创建时间为2024-01-01 10:00:00
        String cadFilePath = "D:/test.dwg";
        String targetTime = "2024-01-01 10:00:00";
        modifyCadFileTime(cadFilePath, targetTime);
    }
}
代码关键说明
  1. 核心逻辑
    • setLastModified():修改文件最后修改时间(跨系统通用);
    • Files.setAttribute():修改创建时间(Windows 用creationTime,Linux/Mac 用birthTime);
  2. 使用方式
    • 替换cadFilePath为你的 CAD 文件路径;
    • 替换targetTime为目标时间(格式:yyyy-MM-dd HH:mm:ss);
    • 直接运行main方法即可。

方案 2:修改 DWG 内部元数据的创建时间(精准)

若需修改 DWG 文件内部存储的创建时间(而非仅文件系统属性),需解析 DWG 格式,依赖dwgreader库:

步骤 1:引入依赖(Maven)

xml

复制代码
<dependency>
    <groupId>com.github.miclle</groupId>
    <artifactId>dwgreader</artifactId>
    <version>1.0.0</version>
</dependency>
步骤 2:核心代码

java

运行

复制代码
import com.github.miclle.dwgreader.DWGReader;
import com.github.miclle.dwgreader.DWGWriter;
import com.github.miclle.dwgreader.metadata.DWGMetadata;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 修改DWG文件内部元数据的创建时间
 */
public class DwgMetadataModifier {
    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 修改DWG内部的创建时间元数据
     * @param dwgFilePath DWG文件路径
     * @param targetCreateTime 目标创建时间(yyyy-MM-dd HH:mm:ss)
     * @return 是否修改成功
     */
    public static boolean modifyDwgCreateTime(String dwgFilePath, String targetCreateTime) {
        try {
            // 1. 读取DWG文件元数据
            DWGReader dwgReader = new DWGReader(dwgFilePath);
            DWGMetadata metadata = dwgReader.readMetadata();

            // 2. 解析目标时间
            Date targetDate = DATE_FORMAT.parse(targetCreateTime);

            // 3. 修改元数据中的创建时间
            metadata.setCreationTime(targetDate);
            // 可选:同时修改最后修改时间
            metadata.setModificationTime(targetDate);

            // 4. 写入修改后的元数据到DWG文件
            DWGWriter dwgWriter = new DWGWriter(dwgFilePath);
            dwgWriter.writeMetadata(metadata);

            System.out.println("DWG内部创建时间修改成功!→ " + targetCreateTime);
            return true;

        } catch (ParseException e) {
            System.out.println("时间格式错误 → " + e.getMessage());
            return false;
        } catch (Exception e) {
            System.out.println("修改DWG元数据失败 → " + e.getMessage());
            return false;
        }
    }

    // 测试示例
    public static void main(String[] args) {
        String dwgPath = "D:/project.dwg";
        String targetTime = "2024-02-15 15:30:00";
        modifyDwgCreateTime(dwgPath, targetTime);
    }
}
注意事项
  1. dwgreader库仅支持 DWG R14-R2020 版本,高版本 DWG 可能解析失败;
  2. 修改前建议备份原 DWG 文件,避免数据损坏;
  3. 若只需修改 "右键属性" 的创建时间,优先用方案 1(无需第三方库)。

方法3:使用本地软件修改文件时间(汇帮批量重命名)

步骤一:启动软件并选择功能

在电脑上安装并运行"汇帮批量重命名"软件。进入主界面后,找到并点击【文件属性修改】菜单选项,进入时间修改功能模块。

步骤二:添加CAD文件

在功能界面中,点击【添加文件】按钮,从本地文件夹中选择需要修改的CAD文件(如DWG或DXF格式)。软件支持同时添加多个文件,便于批量操作。

步骤三:选择时间类型

在文件列表右侧,您会看到【创建时间】和【修改时间】的文本框。根据您的需求,点击需要修改的时间类型(例如,若只需调整创建时间,则选中创建时间选项)。

步骤四:设置具体时间

点击时间文本框后,软件会弹出一个时间选择界面。您可以通过上下拖动或直接输入,精确设置目标日期和时间。确认时间无误后,点击保存按钮。

步骤五:执行修改并验证

最后,点击界面上的【开始执行】按钮,软件将自动处理所选文件。处理完成后,会弹出【操作成功】的提示。此时,您可以打开文件所在文件夹,右键查看任意文件的属性,确认时间已修改为设定值。

相关推荐
SadSunset2 小时前
3.16Java基础(1)
java·开发语言
rrrjqy2 小时前
并发多线程
java·开发语言
、花无将2 小时前
安装:apache-tomcat
java·tomcat·apache
gaoshan123456789102 小时前
springboot 使用zip4j下载压缩包,压缩包内的数据来自oss文件管理服务器
java·服务器·spring boot
币之互联万物2 小时前
杭州柏来科技有限公司:7kW-2400kW 全功率充电桩源头厂家,打造全场景智慧充电解决方
科技
m0_612591972 小时前
江苏智算中心排名与格局分析:尚航科技无锡智算中心的标杆地位
运维·服务器·科技·php·idc
MilieStone2 小时前
美尔斯通到访峪口禽业 共探禽蛋性别鉴定技术创新与合作
科技·生活
Godspeed Zhao2 小时前
科技信息最前沿202603——ADAS
科技
ZZhYasuo2 小时前
冒泡排序1
java·算法·排序算法