2011-06-27 40 views
2

我想为我的一个项目中的文件获取IFile处理程序。IWorkspaceRoot.getFileForLocation()返回null

我有一个Java项目“测试”与“x.dioc”文件里面。当我看着我的本地文件系统,并检查该文件的路径是:
C:\用户\帕维尔\运行时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”文件。

可能是什么原因?

回答

1

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

请让我知道这是否有效。

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

+0

不幸的是,它没有。我尝试了不同的组合/无设备,不同的细分等。 –

+0

请仔细阅读[this](http://eclipsesourcecode.appspot.com/jsrcs/org.eclipse.core.tests.resources/src/org/eclipse/core /tests/resources/IWorkspaceTest.java.html)链接,它可能有帮助。 – Rakesh

1

删除Path变量开头处的“file:”。简单地创建这样的路径:

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

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

1

我用getFile而不是getFileForLocation,它工作。谢谢您的帮助! :-)

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