对于刷新资源关键接口是org.eclipse.core.resources.IResource,只需要调用接口的refreshLocal,比如:
refreshLocal(IResource.DEPTH_INFINITE, null)
在插件开发中有以下接口继承了IResource接口:IContainer、IFolder、IProject、IWorkspaceRoot、IFile
接口的继承关系:
接口 extends
IResource 无
IContainer IResource
IFile IResource
IFolder IContainer
IProject IContainer
IWorkspaceRoot IContainer
类的继承关系
类的继承结构
类 extends implements
Resource 无 IResource
Container Resource IContainer
File Resource IFile
Folder Container IFolder
Project Container IProject
WorkspaceRoot Container IWorkspaceRoot
下面是关于刷新的一个实例:
/**
* 刷新指定项目的指定资源
* @param refreshType 刷新类型,project表示刷新整个项目,file表示刷新某个文件等
* @param resourcePath 需要的资源的相对路径,如果是刷新项目,则为空
* @param projectName 指定项目名称
*/
public static void refresh(String refreshType, String resourcePath,
String projectName){
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject project = root.getProject(projectName);
if(project.exists()){
try {
//刷新项目
if(“project”.equals(refreshType)){
project.refreshLocal(IResource.DEPTH_INFINITE, null);
}else if(“package”.equals(refreshType) ||
"floder".equals(refreshType)){
//刷新包或者文件夹
IFolder floder = project.getFolder(resourcePath);
if(floder.exists()){
floder.refreshLocal(IResource.DEPTH_INFINITE, null);
}
}else if“packagefile”.equals(refreshType) ||
"floderfile".equals(refreshType) ||
"file".equals(refreshType)){
//刷新包文件、文件夹文件或者文件
IFile file = project.getFile(resourcePath);
if(file.exists()){
file.refreshLocal(IResource.DEPTH_INFINITE, null);
}
}
} catch (CoreException e) {
throw new RuntimeException(e);
}
}
}