Należy przyjąć standardową konfigurację maven.Jak uzyskać absolutną ścieżkę do pliku w folderze/resources w projekcie
Powiedz w swoim folderze z zasobami, że masz plik abc
.
W języku Java, w jaki sposób mogę uzyskać absolutną ścieżkę do pliku?
Należy przyjąć standardową konfigurację maven.Jak uzyskać absolutną ścieżkę do pliku w folderze/resources w projekcie
Powiedz w swoim folderze z zasobami, że masz plik abc
.
W języku Java, w jaki sposób mogę uzyskać absolutną ścieżkę do pliku?
Można utworzyć obiekt i użyć File
getAbsolutePath
metody:
File file = new File("resources/abc.txt");
String absolutePath = file.getAbsolutePath();
Porada o ograniczonym wykorzystaniu, ponieważ polega na katalogu roboczym jako maven korzeń. I nawet wtedy powinieneś raczej użyć 'target/classes/abc.txt', aby odwołać się do pliku, ponieważ jest to kanoniczne miejsce, w którym Maven umieszcza pliki zasobów po przetworzeniu (na przykład wtyczka maven-resources mogła dokonać zmiany właściwości na abc.txt). Znacznie lepiej jest użyć abc.txt przez getResource() ze ścieżki klasy. –
Co zrobić, jeśli użytkownik końcowy uruchamia aplikację jako plik wykonywalny JAR? Wtedy nie będzie fizycznego pliku w ogóle. Jest to kolejny powód, dla którego powinieneś użyć funkcji getResource() i np. otwórz strumień wejściowy, zależnie od tego, co chcesz z nim zrobić. –
Czy można to usunąć jako poprawną odpowiedź? @Karol S odpowiedział poniżej - to powinna być poprawna odpowiedź (stąd różnica w rozkładzie) – DanGordon
właściwy sposób, że rzeczywiście działa:
URL resource = YourClass.class.getResource("abc");
Paths.get(resource.toURI()).toFile();
To nie ma teraz znaczenia, gdzie plik w ścieżce klasy jest fizycznie , zostanie znalezione, dopóki zasób jest w rzeczywistości plikiem, a nie wpisem JAR.
(Pozornie oczywiste new File(resource.getPath())
nie działa na wszystkich ścieżkach! Droga jest nadal URL zakodowany!)
Lub prawdopodobnie mógłbyś po prostu zrobić: 'nowy plik (resource.toURI()). GetAbsolutePath();' (nie sądzę, że potrzebujesz obiektu Path?) –
Dobra wskazówka na temat toURI(), dzięki temu przestrzenie na twojej ścieżce wychodzą jako% 20! –
Dzięki! To prawie dla mnie zadziałało. Ale musiałem dokonać jednej zmiany: YourClass.class.getClassLoader(). GetResource ("abc"); – yngwietiger
Musisz specifie ścieżka zaczęła od /
URL resource = YourClass.class.getResource("/abc");
Paths.get(resource.toURI()).toFile();
Tworzenie instancji ClassLoader z następujących klasę, której potrzebujesz, możesz łatwo uzyskać dostęp do plików lub zasobów. teraz ścieżka dostępu przy użyciu metody getPath()
tej klasy.
ClassLoader classLoader = getClass().getClassLoader();
String path = classLoader.getResource("chromedriver.exe").getPath();
System.out.println(path);
Czy chcesz napisać plugin Maven? A może chcesz uzyskać dostęp do pliku po uruchomieniu programu? –
Powiązane: http://stackoverflow.com/questions/8136891/getting-absolute-path-of-a-file-loaded-via-classpath – Vadzim