Jak przekonwertować nazwę pliku ze ścieżki klasy na prawdziwą nazwę pliku?Konwertowanie nazwy ścieżki klasy do rzeczywistej nazwy pliku
Załóżmy na przykład, że katalog "C:\workspace\project\target\classes"
znajduje się w ścieżce klas. W tym katalogu znajduje się plik, taki jak info.properties
.
Jak określić (w czasie wykonywania) bezwzględną ścieżkę do pliku info.properties, biorąc pod uwagę tylko ciąg "info.properties"
?
Wynik będzie podobny do "C:\workspace\project\target\classes\info.properties"
.
Dlaczego ta funkcja jest przydatna? Podczas pisania testów jednostkowych możesz chcieć uzyskać dostęp do plików dołączonych do zasobów testowych (src/main/resources
), ale pracujesz z biblioteką innej firmy lub innym systemem, który wymaga prawdziwej nazwy pliku, a nie względnego odniesienia do klasy classpath.
Uwaga: Sam odpowiedziałem na to pytanie, ponieważ uważam, że jest to przydatna sztuczka, ale wygląda na to, że nikt wcześniej nie zadał tego pytania.
co to da, jeśli zasób znajduje się w słoiku? – radai
@radai Oto przykład wyniku dla pliku w jar: 'file:/C: /tools/some/path/jarfile.jar!/Internal/path/file.txt'. Aby znaleźć taki plik za pomocą powyższej odpowiedzi, musisz podać ścieżkę względem katalogu głównego słoika - np. '" internal/path/file.txt "' – GreenGiant
@radai Sprawdź także (this) (http://stackoverflow.com/questions/12025689/filenotfoundexception-when-exporting-jar/12025740#12025740) –