Java 将IFile转换为文件

Java 将IFile转换为文件,java,eclipse,Java,Eclipse,我有一个IFile对象,它需要用作java.io.File对象。我正在使用以下代码进行转换 file = ifile.getFullPath().toFile(); 但是对file.exists()的调用返回false。您希望使用返回本地文件路径的IResource.getLocation()。但是,请仔细阅读javadoc注释,因为您不能假设资源由实际文件支持(它可以是任何内容,具体取决于项目的设置方式)。如果文件是修改工作区的查询的一部分,而不是实际文件。 IPath也是查询的一部分,该查

我有一个
IFile
对象,它需要用作java.io.File对象。我正在使用以下代码进行转换

file = ifile.getFullPath().toFile();

但是对
file.exists()
的调用返回false。

您希望使用返回本地文件路径的
IResource.getLocation()
。但是,请仔细阅读javadoc注释,因为您不能假设资源由实际文件支持(它可以是任何内容,具体取决于项目的设置方式)。

如果文件是修改工作区的查询的一部分,而不是实际文件。 IPath也是查询的一部分,该查询在工作区中有效

工作区可能不包含IFile,例如Clonned Git项目。某个IFile可能只是一个链接,而不是实际的文件。有些IFile可能实际存在于远程位置

Eclipse使用名为“EFS”的独立文件系统。EFS管理工作区和本机文件系统上的文件。您可以使用EFS查找本地文件。(如果在本地存在)


“但是对file.exists()的调用返回false。”这意味着文件没有退出或者路径无效。您是否也尝试过ifile.exists()?Francis的建议很好。我最后使用的另一个选项是
file=ifile.getRawLocation().makeAbsolute().toFile()
IFile file = ...;

// gets URI for EFS.
URI uri = file.getLocationURI();

// what if file is a link, resolve it.
if(file.isLinked()){
   uri = file.getRawLocationURI();
}

// Gets native File using EFS
File javaFile = EFS.getStore(uri).toLocalFile(0, new NullProgressMonitor());