Escape-Ergebnis von FileLocator.resolve (url)

8

Die Methode FileLocator.resolve(url) kann verwendet werden, um eine Adresse bundleentry://something/somewhere/x.txt in eine korrekte Datei-URL für /mnt/foo/somewhere/x.txt zu übersetzen.

Wie auch in Ссылка dokumentiert, ist die URL jedoch nicht maskiert. Wenn beispielsweise die Eclipse-Installation, die das referenzierte Bundle enthält, in einem Verzeichnis mit einem Leerzeichen enthalten ist, enthält die von FileLocator.resolve zurückgegebene URL immer noch das Leerzeichen und der Aufruf von url.toURI() schlägt daher fehl.

  • Wie kann ich alle notwendigen Zeichen in der URL manuell ausschließen?
  • Wie kann ich ein File -Objekt basierend auf einem Pfad relativ zum aktuellen erhalten? bündeln?

Hier ist der Code, der fehlschlägt, wenn ich versuche, das Verzeichnis dir in der .jar -Datei meines Plugins zu finden, wenn diese Datei in einem Verzeichnis mit einem Leerzeichen steht:

%Vor%     
C-Otto 03.02.2013, 20:31
quelle

2 Antworten

7

Ich habe gerade diesen Code gefunden:

Ссылка

Die relevanten Zeilen helfen in der Tat:

%Vor%     
C-Otto 03.02.2013, 20:50
quelle
1

Zwei zusätzliche Anmerkungen:

  • FileLocator.resolve löst zwar eine URL auf, gibt aber nicht unbedingt eine Datei zurück: / URL. Im Standardfall, in dem Ihr Bundle gepackt ist (in einer .jar-Datei), sollten Sie FileLocator.toFileURL verwenden, das die Ressource bei Bedarf automatisch in einen Cache extrahiert.
  • Da Eclipse 4.x jetzt standardmäßig die EMF Common API enthält, können Sie die URL einfacher wie folgt mit der URI-API von EMF umgehen:

URI resolvedUri = URI.createFileURI(resolved.getPath());

Um den Dateinamen zu erhalten, rufen Sie resolvedUri.toFileString();

auf     
Matthieu Wipliez 27.10.2014 16:18
quelle

Tags und Links