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