Получить файл из папки в рабочей области - PullRequest
4 голосов
/ 27 января 2010

В моей рабочей области есть папка, но за пределами src, в которой содержится файл, который необходимо прочитать, чтобы настроить новый файл при использовании мастера пользовательских плагинов.

Я не могу получить правильное расположение этого файла и продолжаю получать нулевые указатели, пока я точно не укажу, где находится файл в системе. Моя проблема в том, что файл находится в проекте плагина, и я не могу определить его местоположение.

Расположение файла в плагине: com.my.plugin / rules / setup.txt

Ответы [ 2 ]

7 голосов
/ 28 января 2010

Чтобы загрузить ресурс из развернутого пакета, вы можете сделать следующее (ресурс для загрузки должен быть включен в настройку 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());

Обратите внимание, что это отличается от получения чего-либо из рабочей области, так как при запуске пакета поиск чего-либо в рабочей области будет ссылаться на рабочую область runtime , а не на рабочую область разработки. Если вы хотите что-то из рабочей области времени выполнения, вы можете получить к нему доступ следующим образом:

IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IResource resourceInRuntimeWorkspace = root.findMember("rules/setup.txt");
File file = new File(resourceInRuntimeWorkspace.getLocationURI());
0 голосов
/ 27 января 2010

Если у вас есть что-то вроде:

  • рабочее пространство / SRC / Blah.java
  • рабочее пространство / плагин / commyplugin / правила / Setup.txt

Из Blah.java вы сможете сделать что-то вроде:

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

И оттуда создайте файл или используйте getResourceAsStream для возврата InputStream.

Я в основном догадываюсь здесь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...