Чтение и запись в файл Java через ресурс

я пытаюсь читать и писать в файл, но яЯ хотел бы получить доступ к этому файлу через ресурс.

Вот что я делаю

File f = new File(ClassLoader.getSystemResource("/blah/blah/Properties.prop").toURI());
BufferedReader br = new BufferedReader(new FileReader(f));
String line = br.readLine();

PrintWriter p = new PrintWriter(new File(ClassLoader.getSystemResource("/blah/blah/Properties.prop").toURI()));

но ни один не кажется правильным. Как правильно это сделать?

Ответы на вопрос(3)

как вы можете получить доступ к своим ресурсам всоздать папку, Это означает, что ресурсы были перемещены для создания каталога с.учебный класс файлы.

Если вам нужно записать некоторые файлы в ресурсы для их сохранения после завершения программы, вам нужно будет описать путь, начиная с корневого проекта:

./src/main/resources/foo.ext

Это решение обычно не рекомендуется, но может быть необходимо в других случаях.

 Nather Webber05 июл. 2017 г., 19:23
Я спрашивал себя, есть ли способ после указания на целевую папку, чтобы перейти в исходный путь ресурсов.

 try (BufferedReader bufferedReader = Files.newBufferedReader(Paths.get(Resources.getResource("path").toURI()))) {
        //bufferedReader...
    }
    try (BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get(Resources.getResource("path").toURI()))) {
        //bufferedWriter...
    }

Обратите внимание, что путь указывается относительно папки ресурсов.

 chaiyachaiya20 мая 2016 г., 17:47
@HairOfTheDog: Мы можем думать что-то вроде: Files.streamToString (Resources.getResource ("Foo / bar.txt») .OpenStream ()); Это будет работать, даже если файл упакован (исключение было сгенерировано методом Paths.get)
 dardy21 февр. 2017 г., 15:03
Я пробовал это, но он не создает выходной поток в папке ресурсов, но в целевой папке.
 HairOfTheDog11 мая 2016 г., 18:41
Для всех, кому интересно, чтоResources класс на самом делеcom.google.common.io.Resources
 HairOfTheDog10 мая 2016 г., 21:08
Это решение неПохоже, что работает, когда ресурс встроен в JAR-файл. В моем случае ресурсS URI оценивается как"jar:file:/C:/PCProxAPI/PCProxAPI.jar!/com/agilysys/rguest/buy/peripherals/PCProxPlusConfig.cfg" а такжеPaths.get(...) бросаетjava.nio.file.FileSystemNotFoundException
 chaiyachaiya20 мая 2016 г., 17:38
@Собачья шерсть, "Дорожки» только утилитазнает» файловая система. Как только файл упакован в банку, он 'больше нет парадигмы файловой системы.
Решение Вопроса

Попробуйте ниже:

     InputStreamReader isReader= 
                      new InputStreamReader(
                          this.getClass().getResourceAsStream(templateName));
      BufferedReader br = new BufferedReader(isReader);     

или же

     InputStreamReader isReader= 
                      new InputStreamReader(
                          <youclassname>.class.getResourceAsStream(templateName));
      BufferedReader br = new BufferedReader(isReader);   
</youclassname>

Для вывода попробуйте ниже:

      PrintWriter writer = 
               new PrintWriter(
                     new File(this.getClass().getResource(templateName).getPath());
 CodeGuy21 окт. 2012 г., 20:56
можешь показать мне код Я могу'кажется, что PrintWriter работает
 Yogendra Singh21 окт. 2012 г., 21:06
Извините, я пропустил.getResourceAsStream всегда входной поток. Обновленный ответ для PrintWriter, пожалуйста, попробуйте. Кстати, читатель работал?
 CodeGuy21 окт. 2012 г., 21:14
читатель работал. и печать писатель работает! СПАСИБО!!
 Yogendra Singh21 окт. 2012 г., 21:15
@CodeGuy Пожалуйста, нене забудьте принять ответ.
 Yogendra Singh21 окт. 2012 г., 20:55
Должен работать так же, но нечитать и писать один и тот же файл одновременно.
 fabian01 июн. 2018 г., 17:16
Следует отметить, что не может быть файла, в который можно записать. Если ресурс является частью.jar файл, запись не удастся. (Даже если вы можете изменить файл jar, он может быть подписан или просто не находиться на компьютере, на котором работает jvm ...)
 CodeGuy21 окт. 2012 г., 20:52
Спасибо! как насчет вывода с использованием PrintWriter

Ваш ответ на вопрос