我正在做一些序列化,其中还包含一个需要存储为字符串的 IFile 路径。
我在插件项目中使用这个 IFile。用于调试或运行 Eclipse 会启动一个新工作区。这个测试工作区的根目录相对于插件文件夹。我的问题是,当我将 IFile 转换为绝对路径时,我的 Eclipse 测试工作区认为该文件在工作区之外并引发异常。
如果我使用项目相对路径,则从字符串创建 IFile 失败并且 IFile 为空。
我真的很想相信它以我需要的方式工作,但我真的很想看到它。有没有办法从项目相对路径重建有效的 IFile?
目前,我正在从 String->IFile 进行重建,如下所示:
//name is a string with the absolute path
IPath location = new Path(name);
IFile file = project.getFile(location.lastSegment());
但是,正如已经提到的,仅适用于绝对路径,这在 eclipse 测试工作区中不起作用。
谢谢你的提示
最佳答案
你很亲近。你要:
IPath path = new Path(name);
IFile file = project.getFile(path);
该名称应该是一个绝对(到工作区)或项目相对路径。该接口(interface)在 IContainer.getFile(IPath) 中定义。我从“位置”更改了变量,因为位置通常表示实际(本地)操作系统文件路径。要获取路径使用:
IPath path = file.getProjectRelativePath();
关于Eclipse 插件 : Obtaining an IFile from String,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8174821/