Metoda FileLocator.resolve(url)
może zostać użyta do przetłumaczenia adresu bundleentry://something/somewhere/x.txt
na właściwy URL pliku dla /mnt/foo/somewhere/x.txt
.Wynik Escape pliku FileLocator.resolve (url)
Jednak, co jest również udokumentowane pod numerem https://bugs.eclipse.org/bugs/show_bug.cgi?id=145096, adres URL nie jest unikany. Na przykład, jeśli instalacja Eclipse zawierająca wspomniany pakunek znajduje się w katalogu zawierającym spację, adres URL zwrócony przez FileLocator.resolve
nadal zawiera przestrzeń i wywołanie kończy się niepowodzeniem z powodu tego.
- W jaki sposób mogę ręcznie uciec wszystkie niezbędne znaki w adresie URL?
- Jak mogę uzyskać obiekt
File
oparty na ścieżce względem aktualnego pakietu ?
Jako odniesienia, tutaj jest kod, który nie powiedzie się, gdy próbuje znaleźć katalog dir
wewnątrz mojego pluginu .jar
pliku, jeśli plik ten znajduje się w katalogu zawierającym miejsca:
final IPath pathOfExampleProject = new Path("dir");
final Bundle bundle = Platform.getBundle(AproveIDs.PLUGIN_ID);
final URL url = FileLocator.find(bundle, pathOfExampleProject, null);
final URL url2 = FileLocator.toFileURL(url);
url2.toURI(); // Illegal character in path at index [...]