Мне нужно иметь доступ к файлу, хранящемуся в скомпилированном файле jar. Я понял, как добавить файл в проект, но как бы я ссылался на него в коде? Как скопировать файл из файла jar в папку на жестком диске пользователя? Я знаю, что есть десятки способов доступа к файлу (FileInputStream, FileReader, ect.), Но я не знаю, как заглянуть внутрь.Файл доступа в файле jar?
ответ
Вы могли бы использовать что-то вроде этого:
InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileFromJarFile);
Если foo.txt был в корне файла JAR, вы будете использовать:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("foo.txt");
предполагает класс Я считаю, что в том же JAR-файле, что и ресурс.
Посмотрите на класс JarFile. Все, что вам нужно, чтобы получить InputStream конкретной записи в файле jar, есть.
Вы можете использовать getResource() для получения URL-адреса файла в пути к классам или getResourceAsStream(), чтобы получить InputStream.
Например:
BufferedReader reader = new BufferedReader(new InputStreamReader(
this.getClass().getResourceAsStream("foo.txt")));
Вы можете прочитать содержимое файла JAR, используя класс JarFile.
Вот пример того, как вы могли бы получить конкретный файл из файла JAR и извлечь его:
JarFile jar = new JarFile("foo.jar");
String file = "file.txt";
JarEntry entry = jar.getEntry(file);
InputStream input = jar.getInputStream(entry);
OutputStream output = new FileOutputStream(file);
try {
byte[] buffer = new byte[input.available()];
for (int i = 0; i != -1; i = input.read(buffer)) {
output.write(buffer, 0, i);
}
} finally {
jar.close();
input.close();
output.close();
}
Просто хотел бы добавить, что если мы хотим получить доступ к файлу внутри Jar, который находится по следующему пути :
Windows:
c:\your-jar-file.jar\dir1\dir2\dir3\foo.txt
Linux:
/home/your-jar-file.jar/dir1/dir2/dir3/foo.txt
Будет необходимо использовать следующий код (обратите внимание, что есть NO «/» (вперед-слэш) символ в начале пути):
InputStream is = this.getClass().getClassLoader().getResourceAsStream("dir1/dir2/dir3/foo.txt");
- 1. Как выполнить файл jar в файле jar
- 2. Запись в текстовый файл в файле jar
- 3. Ошибка в файле .jar - попытки найти файл в папке jar
- 4. Замените XML-файл в файле JAR
- 5. Запустить файл jar в файле docker
- 6. jar файл не обновляет значения в файле
- 7. Как удалить файл jar в файле aar?
- 8. Как читать файл в другом файле jar?
- 9. Откройте файл PowerPoint, содержащийся в файле JAR
- 10. пытается выполнить файл в моем файле jar
- 11. Файл свойства не найден в файле JAR
- 12. Исключение при попытке доступа к ресурсам в файле jar
- 13. Изображения в файле jar
- 14. Файл доступа из jar через собственный код
- 15. Java Applet в JAR-файле
- 16. Изменение изображения в файле JAR
- 17. доступа H2 базы данных из приложения, содержащиеся в JAR файл
- 18. Конфигурация SLF4J в файле jar
- 19. Поддержание данных в файле jar
- 20. Выполнение класса в файле jar
- 21. источник в файле jar visible
- 22. Невозможно jar -tvf файл jar
- 23. Звуковые проблемы в файле jar
- 24. JAR-файл или классы лучше для доступа к файлам WAR
- 25. Загрузить класс в файле Jar
- 26. Загрузить изображения в файле jar
- 27. Доступ к ресурсам в JAR-файле
- 28. Изменить файл в jar
- 29. Импорт файлов Jar в другой каталог в вашем файле jar
- 30. Медиа-папка в файле jar
Часть того, что мне нужно, это BufferedReader, которому требуется FileReader как imput. Как преобразовать InputStream в FileReader? – LRFLEW
Вы просто играете соединить точки с документацией Java. Посмотрите на BufferedReader - в разделе See See есть FileReader и InputStreamReader. Перейдите в InputStreamReader и т. Д. –
Да, я могу это сделать, но я просто посмотрел BufferedReader и нашел класс parter BufferInputStream, который я должен использовать: P. – LRFLEW