我有一个IFile
对象需要用作java.io.File对象。我正在使用以下代码进行转换。
file = ifile.getFullPath().toFile();
但是对file.exists()
的调用返回false。
答案 0 :(得分:9)
您想使用返回本地文件路径的IResource.getLocation()
。但是,请仔细阅读javadoc注释,因为您不能假设资源由实际文件支持(它可以是任何东西,具体取决于项目的设置方式)。
答案 1 :(得分:3)
IFile是查询到modificate工作空间的一部分,而不是实际文件。 IPath也是在Workspace上有效的查询的一部分。
工作空间可能不包含IFile,例如。 Clonned Git项目。一些IFile可能只是一个链接,而不是实际文件。而一些IFile实际上可能存在于远程位置。
Eclipse使用名为“EFS”的独立文件系统。 EFS管理工作空间和本机文件系统上的文件。您可以使用EFS查找本地文件。 (如果它存在于本地)
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());