Eclipse 插件 - 如何在给定路径 (IPath) 中创建所有文件夹 (IFolders)

Eclipse Plugin - How do I create all folders (IFolders) in a given path (IPath)

在我的 Generator.xtend class 中,我试图从给定的路径创建一个包,就像给定的 "com/example/config",我想在示例文件夹中创建配置文件夹com文件夹。这是我到目前为止尝试过的:

def static generateJavaPackages(String pkgName, IProject projectDir, IProgressMonitor monitor) {
        val mainJavaFolder = '/src/main/java/'

        /* create package folders */
        try {

            projectDir.getFolder(mainJavaFolder + pkgName).create(true, true, monitor)
            
        } catch (ResourceException exception) {

            exception.printStackTrace()
        }
    }

有没有类似于mkdir的方法在路径中创建不存在的文件夹?

您必须自己创建所有中间文件夹。

Eclipse JDT 是这样做的:

public static void createFolder(IFolder folder, boolean force, boolean local, IProgressMonitor monitor) throws CoreException {
    if (!folder.exists()) {
        IContainer parent = folder.getParent();
        if (parent instanceof IFolder) {
            createFolder((IFolder)parent, force, local, null);
        }
        folder.create(force, local, monitor);
    }
}

这只是通过文件夹的父级检查它们是否存在并在不存在时创建它们。

我在研究 API:

时偶然发现了一个更短的解决方案 - 我可能会说是一个更好的解决方案
val mainJavaFolderPath = new Path("/src/main/java")
    // Segmenting with .segments was the clue for me
    for (segment : mainJavaFolderPath.segments) {
        var pkgFolder = rootDir.getFolder(new Path(segment))
        if (!pkgFolder.exists())
            pkgFolder.create(true, true, monitor)
    }