【问题标题】:Eclipse Plugin - How do I create all folders (IFolders) in a given path (IPath)Eclipse 插件 - 如何在给定路径 (IPath) 中创建所有文件夹 (IFolders)
【发布时间】:2021-09-05 13:04:51
【问题描述】:

在我的 Generator.xtend 类中,我试图从给定路径创建一个包,例如给定 "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 eclipse-plugin xtend


    【解决方案1】:

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

    这就是 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);
        }
    }
    

    这只是通过文件夹的父级检查它们是否存在,如果不存在则创建它们。

    【讨论】:

      【解决方案2】:

      我在研究 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)
          }
      

      【讨论】:

      • 这看起来像是在根目录中创建了每个段
      • @greg-449 它在项目目录中创建 src 文件夹,然后在 src 中创建主文件夹,最后在主文件夹中创建 java 文件夹。并非所有段都作为根目录中的兄弟姐妹。
      • 它为每个段调用rootDir.getFolder,返回根目录下的一个文件夹。这些段只是“src”、“main”、“java”——如何嵌套文件夹?
      猜你喜欢
      • 2011-05-01
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 2013-08-28
      • 2021-07-06
      相关资源
      最近更新 更多