Мое требование - прочитать файл из RAR. Предположим, я не пытаюсь записать временный файл из RAR, внутри RAR у меня есть файл, мне просто нужно прочитать.
androidgalaxyman
Я не понимаю вопроса. Просьба уточнить. Если вы хотите получить исходный файл из InputStream, его не было: вы читаете файл RAR, а не файл. Если вы хотите чего-то еще, что?
Не удалось разрешить IOUtils в Android Studio, и ссылка, на которую вы ссылались, - 404.
Шахрайз Т.
3
org.apache.directory.studio:org.apache.commons.io необходимо добавить в качестве зависимости. Виноват. :)
Shahraiz T.
7
Пожалуйста, закройте правильно OutputStream, попробуйте с ресурсами или IOUtils.closeQuietly. Я знаю, что это всего лишь пример, но новички буквально скопируют его.
Он также существует в org.apache.axis2.util с третьим параметром для функции копирования. Функционал там тоже работает. Любые сравнения того, что использовать?
Ридхуваршан
26
Начиная с Java 7, вы можете делать это в одну строку даже без использования каких-либо внешних библиотек:
Ответы:
Вам нужно создать новый файл и скопировать содержимое из
InputStream
этого файла:Я использую удобно,
IOUtils.copy()
чтобы избежать ручного копирования потоков. Также есть встроенная буферизация.источник
В одной строке:
(Org.apache.commons.io)
источник
Сначала создайте временный файл.
источник
Начиная с Java 7, вы можете делать это в одну строку даже без использования каких-либо внешних библиотек:
См. Документацию по API .
источник
Если вы не хотите использовать другую библиотеку, здесь простая функция для преобразования
InputStream
вOutputStream
.Теперь вы можете легко записать
Inputstream
в файл, используяFileOutputStream
-источник
Решение Easy Java 11 с блоком try with resources
java.io.InputStream # transferTo доступен начиная с Java 9.
источник
Если вы используете Java версии 7 или выше, вы можете использовать try-with-resources, чтобы правильно закрыть файл
FileOutputStream
. Следующее использование кодаIOUtils.copy()
из Викисклада гипергликемии .источник
try
инициализации, автоматически закрываются приtry
выходе из блока.