从工作区中的文件夹中检索文件

我的工作区内有一个文件夹,但在’src’之外,其中包含一个文件,需要在使用自定义插件向导时设置新文件。

除非我准确指定文件在系统中的位置,否则我无法正确获取此文件的位置并继续获取空指针。 我的问题是文件是在一个插件项目中,我无法得到它的位置。

插件中的文件位置是com.my.plugin / rules / setup.txt

要从已部署的捆绑包加载资源,您可以执行以下操作(要加载的资源需要包含在build.properties二进制构建设置中):

 Bundle bundle = YourBundleActivator.getDefault().getBundle(); IPath path = new Path("rules/setup.txt"); URL setupUrl = FileLocator.find(bundle, path, Collections.EMPTY_MAP); File setupFile = new File(FileLocator.toFileURL(setupUrl).toURI()); 

请注意,这与从工作区中获取内容不同,因为在捆绑包运行时,在工作区中查找内容将引用运行时工作区,而不是开发工作区。 如果您确实需要运行时工作区中的某些内容,则可以像这样访问它:

 IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); IResource resourceInRuntimeWorkspace = root.findMember("rules/setup.txt"); File file = new File(resourceInRuntimeWorkspace.getLocationURI()); 

假设你有类似的东西:

  • 工作区/ SRC / Blah.java
  • 工作空间/插件/ commyplugin /规则/ SETUP.TXT

从Blah.java你应该能够做到这样的事情:

 URL urlToFile = getClass().getResource("/plugin/commyplugin/rules/setup.txt"); 

然后从那里创建一个文件或使用getResourceAsStream返回一个InputStream。

我大多猜测:)