我想在我的一个项目中获取文件的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”文件。
可能是什么原因?
答案 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);