Предположим, что стандартная настройка maven.
Скажите в папке ресурсов, что у вас есть файл abc.
В Java, как я могу получить абсолютный путь к файлу, пожалуйста?
Предположим, что стандартная настройка maven.
Скажите в папке ресурсов, что у вас есть файл abc.
В Java, как я могу получить абсолютный путь к файлу, пожалуйста?
 Вы можете использовать метод ClassLoader.getResource чтобы получить правильный ресурс.
URL res = getClass().getClassLoader().getResource("abc.txt");
File file = Paths.get(res.toURI()).toFile();
String absolutePath = file.getAbsolutePath();
ИЛИ ЖЕ
Хотя это может не работать постоянно, более простое решение -
 Вы можете создать объект File и использовать метод getAbsolutePath:
File file = new File("resources/abc.txt");
String absolutePath = file.getAbsolutePath();
Правильный способ работы:
URL resource = YourClass.class.getResource("abc");
Paths.get(resource.toURI()).toFile();
Теперь не имеет значения, где физически находится файл в пути к классам, он будет найден до тех пор, пока ресурс фактически является файлом, а не записью JAR.
(Казалось, очевидный new File(resource.getPath()) не работает для всех путей! Путь по-прежнему кодируется URL-адресом!)
Необходимо указать путь, начинающийся с /
URL resource = YourClass.class.getResource("/abc");
Paths.get(resource.toURI()).toFile();
 Создайте экземпляр classLoader нужного вам класса, тогда вы сможете легко получить доступ к файлам или ресурсам. Теперь вы getPath() доступ к пути, используя getPath() этого класса.
 ClassLoader classLoader = getClass().getClassLoader();
 String path  = classLoader.getResource("chromedriver.exe").getPath();
 System.out.println(path);
Чтобы вернуть файл или путь к файлу
URL resource = YourClass.class.getResource("abc");
File file = Paths.get(resource.toURI()).toFile(); // return a file
String filepath = Paths.get(resource.toURI()).toFile().getAbsolutePath();  // return file path
На пути к абсолютному пути есть две проблемы:
Следующий код даст нам все полезные пути:
    URL localPackage = this.getClass().getResource("");
    URL urlLoader = YourClassName.class.getProtectionDomain().getCodeSource().getLocation();
    String localDir = localPackage.getPath();
    String loaderDir = urlLoader.getPath();
    System.out.printf("loaderDir = %s\n localDir = %s\n", loaderDir, localDir);
 Здесь исследуются обе функции, которые можно использовать для локализации папки ресурсов. Что касается class, его можно получить любым способом, статически или динамически.
Если проекта нет в плагине, код, запущенный в JUnit, выведет:
loaderDir = /C:.../ws/source.dir/target/test-classes/
 localDir = /C:.../ws/source.dir/target/test-classes/package/
 Итак, чтобы попасть в src/rest/resources, нам нужно пройти вверх и вниз по дереву файлов. Оба метода могут быть использованы. Обратите внимание, мы не можем использовать getResource(resourceFolderName), поскольку эта папка не находится в целевой папке. Надеюсь, никто не вкладывает ресурсы в созданные папки.
Если класс находится в пакете, который находится в плагине, результат того же теста будет:
loaderDir = /C:.../ws/plugin/bin/
 localDir = /C:.../ws/plugin/bin/package/
Итак, снова мы должны идти вверх и вниз по дереву папок.
Наиболее интересным является случай, когда пакет запускается в плагине. Как тест плагинов JUnit, для нашего примера. Выход:
loaderDir = /C:.../ws/plugin/
 localDir = /package/
 Здесь мы можем получить абсолютный путь, только объединяя результаты обеих функций. И этого мало. Между ними мы должны указать локальный путь к месту, где находятся пакеты классов, относительно папки плагина. Возможно, вам придется вставить что-то как src или src/test/resource здесь.
Вы можете вставить код в свой и увидеть пути, которые у вас есть.