将IFile转换为File

时间:2012-01-11 00:08:00

标签: java eclipse

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

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

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

2 个答案:

答案 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());