Eclipse 插件项目中的 ASCII 文件在导出后不可见
ASCII file in Eclipse plugin project not visible after export
我正在处理一个 Eclipse 插件项目。在该项目中,我有一个文件夹 resources
,其中包含一个简单的 ASCII 文件,其中包含带有 String
的行。 ui 在下拉菜单中使用了这些 String
。如果我 运行 一个新的启动时间 Eclipse 一切正常,文件内容被下拉菜单成功使用,但如果我 export 应用程序和 运行它,下拉菜单是空的,这意味着无法读取该文件。
在 plugin.xml
(Build 选项卡)中,我在二进制 build.[=17 中标记了资源文件夹(其中包含 ASCII 文件) =]
这是我逐行提取文件的方式:
public class ParameterExtractor {
private final static String FILE_PATH = "/resources/parameters";
public ArrayList<String> extractParameters() throws IOException {
ArrayList<String> params = new ArrayList<String>();
URL url = FileLocator.resolve(getClass().getResource(FILE_PATH));
URI uri = null;
try {
uri = url.toURI();
} catch (URISyntaxException e) {
e.printStackTrace();
}
if (uri != null) {
try {
File file = new File(uri);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
params.add(line);
}
fileReader.close();
} catch (Exception ioe) {
ioe.printStackTrace();
}
}
return params;
}
}
这就是我如何使用返回的 ArrayList
:
ArrayList<String> params = new ArrayList<String>();
try {
params = new ParameterExtractor().extractParameters();
} catch (IOException e1) {
e1.printStackTrace();
}
final Combo combo = new Combo(container, SWT.BORDER);
combo.setItems(params.toArray(new String[params.size()]));
什么可能导致问题,我该如何解决?
如有任何帮助,我将不胜感激!
FileLocator.resolve
不保证 return 您 URL 可以用来读取文件。而是使用:
Bundle bundle = ... your plugin bundle
URL url = FileLocator.find(bundle, new Path(FILE_PATH), null);
url = FileLocator.toFileURL(url);
由toFileURL
编辑的URL return适合使用File
和FileReader
阅读。
我正在处理一个 Eclipse 插件项目。在该项目中,我有一个文件夹 resources
,其中包含一个简单的 ASCII 文件,其中包含带有 String
的行。 ui 在下拉菜单中使用了这些 String
。如果我 运行 一个新的启动时间 Eclipse 一切正常,文件内容被下拉菜单成功使用,但如果我 export 应用程序和 运行它,下拉菜单是空的,这意味着无法读取该文件。
在 plugin.xml
(Build 选项卡)中,我在二进制 build.[=17 中标记了资源文件夹(其中包含 ASCII 文件) =]
这是我逐行提取文件的方式:
public class ParameterExtractor {
private final static String FILE_PATH = "/resources/parameters";
public ArrayList<String> extractParameters() throws IOException {
ArrayList<String> params = new ArrayList<String>();
URL url = FileLocator.resolve(getClass().getResource(FILE_PATH));
URI uri = null;
try {
uri = url.toURI();
} catch (URISyntaxException e) {
e.printStackTrace();
}
if (uri != null) {
try {
File file = new File(uri);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
params.add(line);
}
fileReader.close();
} catch (Exception ioe) {
ioe.printStackTrace();
}
}
return params;
}
}
这就是我如何使用返回的 ArrayList
:
ArrayList<String> params = new ArrayList<String>();
try {
params = new ParameterExtractor().extractParameters();
} catch (IOException e1) {
e1.printStackTrace();
}
final Combo combo = new Combo(container, SWT.BORDER);
combo.setItems(params.toArray(new String[params.size()]));
什么可能导致问题,我该如何解决?
如有任何帮助,我将不胜感激!
FileLocator.resolve
不保证 return 您 URL 可以用来读取文件。而是使用:
Bundle bundle = ... your plugin bundle
URL url = FileLocator.find(bundle, new Path(FILE_PATH), null);
url = FileLocator.toFileURL(url);
由toFileURL
编辑的URL return适合使用File
和FileReader
阅读。