Question

J'essaie de créer un nouveau fichier dans un plugin eclipse. Ce n'est pas nécessairement un fichier Java, ce peut être un fichier HTML par exemple.

En ce moment, je fais ceci:

IProject project = ...;
IFile file = project.getFile("/somepath/somefilename"); // such as file.exists() == false
String contents = "Whatever";
InputStream source = new ByteArrayInputStream(contents.getBytes());
file.create(source, false, null);

Le fichier est créé, mais le problème est qu’il n’est pas reconnu comme étant de type quelconque; Je ne peux pas l'ouvrir dans aucun éditeur interne. C'est jusqu'à ce que je redémarre Eclipse (actualiser ou fermer puis ouvrir le projet ne aide pas). Après un redémarrage, le fichier est parfaitement utilisable et s’ouvre dans l’éditeur par défaut adapté à son type.

Existe-t-il une méthode que je dois appeler pour extraire le fichier de ce "limbo"? état?

Était-ce utile?

La solution

Ce fil mentionne le createFile , mais fait également référence à un FileEditorInput pour l'ouvrir:

  

Au lieu de java.io.File , vous devez utiliser IFile.create (..) ou IFile.createLink (..) . Vous devrez d'abord obtenir un descripteur IFile à partir du projet, à l'aide de IProject.getFile (..) , puis créer le fichier à l'aide de ce descripteur.
  Une fois le fichier créé, vous pouvez en créer FileEditorInput et utiliser IWorkbenchPage.openEditor (..) pour ouvrir le fichier dans un éditeur.

Maintenant, est-ce que ce genre de méthode (à partir de cela AbstractExampleInstallerWizard >) vous aider dans ce cas?

  protected void openEditor(IFile file, String editorID) throws PartInitException
  {
    IEditorRegistry editorRegistry = getWorkbench().getEditorRegistry();
    if (editorID == null || editorRegistry.findEditor(editorID) == null)
    {
      editorID = getWorkbench().getEditorRegistry().getDefaultEditor(file.getFullPath().toString()).getId();
    }

    IWorkbenchPage page = getWorkbench().getActiveWorkbenchWindow().getActivePage();
    page.openEditor(new FileEditorInput(file), editorID, true, IWorkbenchPage.MATCH_ID);
  }  

Voir aussi ceci SDOModelWizard ouverture d'un éditeur sur un nouveau IFile :

  // Open an editor on the new file.
  //
  try
  {
    page.openEditor
      (new FileEditorInput(modelFile),
       workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());
  }
  catch (PartInitException exception)
  {
    MessageDialog.openError(workbenchWindow.getShell(), SDOEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
    return false;
  }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top