Eclipse中的IFile与File和Eclipse中文件同步问题

首先,IFile是Eclipse中的一个接口,它继承IResourse接口。顺便提一下在Eclipse中,接口名一般以“I”开头。其中IFile表示文件;IResourse表示资源。从继承关系上可以看出文件是资源的一种。

 

Eclipse提供的IResource 实现类,一般都不能用代码new,因为构造函数为保护类型。如 File类:
package org.eclipse.core.internal.resources;
public class File extends Resource implements IFile {
            protected File(IPath path, Workspace container) {
                        super(path, container);
            }
}
通过下面的方法:可以得到或是创建IResource 实现类。[以工程为例]
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject project = root.getProject("工程名");
如果存在"工程名"工程,则得到该工程的句柄。
如果没有,则得到一个新的句柄,可以用project.create(null)来创建一个工程对象。

 

通过Eclipse的IFile转换到java的File.方法如下:
IFile ifile = ...;
File newFile = new File(ifile.getLocation().toOSString());

 

同步刷新机制:有时对Eclipse中的文件操作完后,需要刷新一下资源,否则不能显示你的修改。刷新方法可以如下:

IResource res= ResourcesPlugin.getWorkspace().getRoot().findMember(editorinput.getPath());
res.refreshLocal(IResource.DEPTH_ZERO,null);

或者

IFile file = editorinput.getFile();
file.refreshLocal(IResource.DEPTH_ZERO,null);

为什么会是需要刷新呢?通过《Contributing to Eclipse》介绍,IResource只是系统资源的句柄,也就是说IResource不是真正的资源,而是资源的引用而已。当系统资源改变后,应该通知Eclipse,告诉Eclipse资源改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值