Java 如何使IEditorInput从内存中读取文件?

Java 如何使IEditorInput从内存中读取文件?,java,eclipse,eclipse-plugin,eclipse-rcp,Java,Eclipse,Eclipse Plugin,Eclipse Rcp,我正在为eclipse编写插件,我需要为RAM中加载的文件打开编辑器。当我打开新编辑器时,它从IEditorInput获取输入。有许多类实现了这个接口,但它们通常是从硬盘读取文件,或者对于这个目的它们是无用的 因此,问题是: 如何使IEditorInput从内存中读取文件?您可以使用实现IStorageEditorInput的对象作为编辑器输入。这使用一个IStorage对象来保存要编辑的内存中数据 一个简单的IStorageEditorInput实现如下所示: class StorageEdi

我正在为eclipse编写插件,我需要为RAM中加载的文件打开编辑器。当我打开新编辑器时,它从IEditorInput获取输入。有许多类实现了这个接口,但它们通常是从硬盘读取文件,或者对于这个目的它们是无用的

因此,问题是:
如何使IEditorInput从内存中读取文件?

您可以使用实现
IStorageEditorInput
的对象作为编辑器输入。这使用一个
IStorage
对象来保存要编辑的内存中数据

一个简单的
IStorageEditorInput
实现如下所示:

class StorageEditorInput extends PlatformObject implements IStorageEditorInput {
    private IStorage fStorage;

    public StorageEditorInput(IStorage storage) {
        fStorage = storage;
    }

    @Override
    public IStorage getStorage() {
        return fStorage;
    }

    @Override
    public ImageDescriptor getImageDescriptor() {
        return null;
    }

    @Override
    public String getName() {
        return getStorage().getName();
    }

    @Override
    public IPersistableElement getPersistable() {
        return null;
    }

    @Override
    public String getToolTipText() {
        return getStorage().getFullPath().toOSString();
    }

    @Override
    public boolean equals(Object object) {
        return object instanceof StorageEditorInput &&
         getStorage().equals(((StorageEditorInput)object).getStorage());
    }

    @Override
    public int hashCode() {
        return getStorage().hashCode();
    }

    @Override
    public boolean exists() {
        return true;
    }
}
(以上改编自
org.eclipse.debug.internal.ui.views.console.ProcessConsole

您还必须提供自己的
IStorage
实现,事实上您可能应该实现
IEncodedStorage
,它扩展了
IStorage
以包括字符编码

请注意,某些编辑器可能不理解
IStorageEditorInput