У меня есть программа, которая читает несколько файлов json, а затем проводит анализ информации, содержащейся в этих файлах.
Структура моего проекта выглядит следующим образом:
/main
/java
/resources
/data
file1.json
file2.json
...
fileN.json
Я пытаюсь дать пользователю возможность указать альтернативное местоположение, если у него есть другой набор данных, который он хочет проанализировать.
Я использую следующий код для создания массива объектов File:
ClassLoader loader = myClass.class.getClassLoader();
URL url = loader.getResource(location);
try {
String path = url.getPath();
return new File(path).listFiles();
} catch (NullPointerException e) {
throw new FileNotFoundException();
}
Примечание: я использую myClass.class.getClassLoader (), потому что я звоню изстатический метод, а не из экземпляра объекта.
Это успешно работает, когда location = "data"
.Однако, если я передам абсолютный путь в другое место (например: location = "/Users/myuser/Desktop/data"
), в котором есть те же файлы данных, я получу NPE.
Есть ли хороший способ, который позволит мне использовать каталог src / main / resources по умолчанию, но позволит моему пользователю указать абсолютный путь к данным, если они выберут?