Eclipse插件:创建一个新文件

Eclipse插件:创建一个新文件,eclipse,file,eclipse-plugin,Eclipse,File,Eclipse Plugin,我正在尝试在eclipse插件中创建一个新文件。它不一定是Java文件,例如可以是HTML文件 现在我正在这样做: IProject项目=。。。; IFile file=project.getFile(“/somepath/somefilename”);//例如file.exists()==false String contents=“无论如何”; InputStream源=新的ByteArrayInputStream(contents.getBytes()); create(source,fa

我正在尝试在eclipse插件中创建一个新文件。它不一定是Java文件,例如可以是HTML文件

现在我正在这样做:

IProject项目=。。。;
IFile file=project.getFile(“/somepath/somefilename”);//例如file.exists()==false
String contents=“无论如何”;
InputStream源=新的ByteArrayInputStream(contents.getBytes());
create(source,false,null);
文件被创建,但问题是它没有被识别为任何类型;我无法在任何内部编辑器中打开它。直到我重新启动Eclipse(刷新或关闭然后打开项目没有帮助)。重新启动后,该文件完全可用,并根据其类型在正确的默认编辑器中打开

是否有任何方法需要调用以使文件脱离“limbo”状态?

确实提到了
createFile
调用,但也引用了
FileEditorInput
来打开它:

您应该使用
IFile.create(..)
IFile.createLink(..)
而不是
java.io.File
。您需要首先使用
IProject.getFile(..)
从项目中获取
IFile
句柄,然后使用该句柄创建文件。
创建文件后,您可以从中创建
FileEditorInput
,并使用
IWorkbenchPage.openEditor(..)
在编辑器中打开文件

现在,这种方法(从这里)对这种情况有帮助吗

受保护的void openEditor(IFile文件、字符串编辑器)引发PartInItemException
{
IEditorRegistry editorRegistry=getWorkbench().getEditorRegistry();
if(editorID==null | | editorRegistry.findEditor(editorID)==null)
{
editorID=getWorkbench().getEditorRegistry().getDefaultEditor(文件.getFullPath().toString()).getId();
}
IWorkbenchPage=getWorkbench().getActiveWorkbenchWindow().getActivePage();
page.openEditor(新文件editorinput(file),editorID,true,IWorkbenchPage.MATCH\u ID);
}  
另请参见在新的
IFile
上打开编辑器:

//打开新文件的编辑器。
//
尝试
{
page.openEditor
(新文件编辑器输入(模型文件),
workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId();
}
捕获(PartInItemException异常)
{
MessageDialog.openError(workbenchWindow.getShell(),SDOEditorPlugin.INSTANCE.getString(“\u UI\u OpenEditorError\u label”),exception.getMessage());
返回false;
}

事实上,在正确的编辑器中打开文件就成功了。非常感谢。