В настоящее время я начал программировать игровые площадки для настольных игр, которые могут загружать разные игры. Я храню эти игры в файле с именем config.txt, но у меня возникают проблемы с его доступом. Во-первых, я начал с моего любимого файлового подхода:
String fileAddress = "./resources/config.txt";
fis = new FileInputStream(fileAddress);
reader = new BufferedReader(new InputStreamReader(fis));
Но потом, когда я построил файл.jar, он перестал работать. По понятным причинам. Поэтому я обнаружил, что оглядываюсь, и я нашел рекомендацию использовать метод getResourceAsStream (String s). Поэтому я изменил свой код следующим образом:
String fileAddress = "./resources/config.txt";
InputStream toReturn=null;
toReturn = this.getClass().getClassLoader().getResourceAsStream(fileAddress);
Но здесь я застрял. Независимо от того, как я настраиваю файлAddress (проверенный./config.txt./resources/config.txt./resources/boardgames/config.txt и. /resources/boardgames/config.txt), и оба использования или исключения getClassLoader(), результат toReturn всегда равен NULL и в конечном итоге бросает NullPointerException очень скоро.
Далее следует расположение требуемого файла. Поскольку у меня недостаточно репутации, мне придется использовать ASCII в иерархии файлов. Оба config.txt являются допустимыми целями.
В файловой системе:
Boardgames
src
cache
classes
resources
boardgames
config.txt
imgs
config.txt
Внутри файла Jar
BoardGames.jar
boardgames
<class files>
config.txt
imgs
META-INF
config.txt
Поэтому мне понадобится помощь в исправлении кода, чтобы он правильно прочитал файл. Если бы вы могли включить советы о том, как получить ImageIcon из.png файлов, находящихся в подпапках imgs, так как я считаю, что столкнулся с аналогичной проблемой, как только я пройду фазу инициализации через config.txt.
Спасибо за твою помощь.
спасибо @EJP и @immibis за помощь.
this.getClass().getResourceAsStream("boardgames/config.txt");
было решение, которое, наконец, привело меня в бег