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

时间:2010-01-27 17:06:07

标签: java eclipse plugins

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

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

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

2 个答案:

答案 0 :(得分:7)

要从已部署的捆绑包加载资源,您可以执行以下操作(要加载的资源需要包含在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());

答案 1 :(得分:0)

假设你有类似的东西:

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

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

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

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

我在这里猜测:)