Java 修改 CAD 文件创建时间的代码实现
CAD 文件(如.dwg)的创建时间、修改时间等元数据存储在文件的属性或 DWG 格式的内部结构中,以下提供两种实用方案:修改文件系统层面的创建时间 (通用)和解析 DWG 元数据修改内部创建时间(精准),新手也能快速上手。
前置说明
- 核心依赖 :
- 修改文件系统属性:JDK 自带 API 即可,无需额外依赖;
- 解析 DWG 元数据:需引入第三方库(
dwgreader,轻量且易用)。
- 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);
}
}
代码关键说明
- 核心逻辑 :
setLastModified():修改文件最后修改时间(跨系统通用);Files.setAttribute():修改创建时间(Windows 用creationTime,Linux/Mac 用birthTime);
- 使用方式 :
- 替换
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);
}
}
注意事项
dwgreader库仅支持 DWG R14-R2020 版本,高版本 DWG 可能解析失败;- 修改前建议备份原 DWG 文件,避免数据损坏;
- 若只需修改 "右键属性" 的创建时间,优先用方案 1(无需第三方库)。
方法3:使用本地软件修改文件时间(汇帮批量重命名)
步骤一:启动软件并选择功能
在电脑上安装并运行"汇帮批量重命名"软件。进入主界面后,找到并点击【文件属性修改】菜单选项,进入时间修改功能模块。

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

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

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

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

