有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javaiworkspaceroot。getFileForLocation()返回null

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

我有一个Java项目“test”,里面有“x.dioc”文件。当我查看本地文件系统并检查文件路径时,它是:
C:\Users\Pawel\runtime-New\u configuration\test\src\x.dioc

现在,我尝试获取handler:

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

但是我得到了null

我了解到,如果文件不是工作区的一部分,该方法将返回null。但当我在PackageExplorer中浏览“test”项目时,我可以在那里看到“x.dioc”文件

原因可能是什么


共 (3) 个答案

  1. # 1 楼答案

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

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

    那么您的IFile源文件应该包含正确的引用

  2. # 2 楼答案

    我使用了getFile而不是getFileForLocation,这很有效。谢谢你的帮助!:-)

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

  3. # 3 楼答案

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

    请让我知道这是否有效

    这项工作: IPath p=新路径(“/test/src/x.dioc”)
    IFile sourceFile=ResourcesPlugin。getWorkspace()。getRoot()。getFile(p); 但getFileForLocation并没有(至少对我来说)