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

如何从当前类(如MigrationGenerator)获取对应文件夹(如migrations)的路径

类到指定文件夹路径的实现方法

项目目录结构

你需要获取从MigrationGenerator类到migrations文件夹的路径,用于生成filePath给outter.output(migrationDocument, new FileWriter(filePath));这段代码使用,具体可按以下两种方式实现:

方法1:基于类定位的相对路径获取

import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Paths;

public class PathUtil {
    public static String getMigrationFilePath(String fileName) throws URISyntaxException {
        // 获取MigrationGenerator类的编译后存放位置
        URL classUrl = MigrationGenerator.class.getProtectionDomain().getCodeSource().getLocation();
        File classRootDir = new File(classUrl.toURI());
        // 按照你的目录层级调整,示例是从类编译目录向上退3层到项目根,再进入migrations文件夹
        String filePath = Paths.get(classRootDir.getParent(), "..", "..", "migrations", fileName).toString();
        return filePath;
    }
}

注意:需要根据你实际的编译输出目录结构调整相对层级,避免路径错位

方法2:固定目录配置(更稳定,推荐使用)

直接配置migrations的根目录,无需和类路径绑定,适配各种开发、部署场景:

  • 提前创建好migrations文件夹,或者在代码里做自动创建判断
  • 直接拼接路径即可,代码如下:
// 可根据环境调整目录路径,开发环境用相对路径,生产环境可配绝对路径
String migrationRootDir = "./migrations";
File dir = new File(migrationRootDir);
// 目录不存在则自动创建
if (!dir.exists()) {
    dir.mkdirs();
}
// 拼接生成最终文件路径
String filePath = Paths.get(migrationRootDir, "你的迁移文件名.sql").toString();
// 执行输出
outter.output(migrationDocument, new FileWriter(filePath));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 14:54:06