IWorkspaceRoot.getFileForLocation()返回null

时间:2011-06-27 20:54:17

标签: java eclipse-plugin

我想在我的一个项目中获取文件的IFile处理程序。

我有一个带有“x.dioc”文件的Java项目“test”。当我查看我的本地文件系统并检查文件的路径时: C:\用户\的Pawel \运行时间New_configuration \测试\ SRC \ x.dioc

现在,我尝试获取处理程序:

IPath p = new Path("file:/C:/Users/Pawel/runtime-New_configuration/test/src/x.dioc");
IFile sourceFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(p);

但我得到null

我已经读过,如果文件不是工作区的一部分,则此方法返回null。但是当我在包浏览器中浏览“test”项目时,我可以在那里看到“x.dioc”文件。

可能是什么原因?

3 个答案:

答案 0 :(得分:1)

我猜文件路径不正确。当您获得工作区的根目录时,为什么需要指定完整的文件路径?您可以尝试使用以下任何字符串作为文件路径。
IPath p = new Path("/test/src/x.dioc");
IFile sourceFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(p);

如果有效,请告诉我。

这有效: IPath p = new Path(“/ test / src / x.dioc”);
IFile sourceFile = ResourcesPlugin.getWorkspace()。getRoot()。getFile(p); 但getFileForLocation没有(至少对我而言)。

答案 1 :(得分:1)

删除Path变量开头的“file:”。只需创建如下路径:

IPath p = new Path("C:/Users/Pawel/runtime-New_configuration/test/src/x.dioc");

然后你的IFile sourceFile应该包含正确的引用。

答案 2 :(得分:1)

我使用getFile而不是getFileForLocation并且它有效。谢谢您的帮助! : - )

IWorkspaceRoot root = ResourcesPlugin.getWorkspace()。getRoot(); IFile resultFile = root.getFile(iPath);