#java #file-io #bufferedreader #java-io
#java #file-io #bufferedreader #java-io
Вопрос:
В Java…
У меня есть данные, хранящиеся в BufferedReader. (Я получил это как ответ на запрос HTTP post.)
Как мне записать эти (двоичные) данные в файл?
Я знаю, как записывать строки в файлы, но как мне взять данные из BufferedReader и поместить их в файл.
Заранее спасибо!
Комментарии:
1. Какую клиентскую библиотеку HTTP вы используете для выполнения HTTP POST?
Ответ №1:
Не используйте Reader для получения байтов. Reader используется для чтения символьных данных, а не двоичных данных. Используйте InputStream напрямую.
void write(InputStream is, OutputStream os) throws IOException {
byte[] buf = new byte[512]; // optimize the size of buffer to your need
int num;
while ((num = is.read(buf)) != -1) {
os.write(buf, 0, num);
}
}
Комментарии:
1. Выходной поток понятен — я могу создать FileOutputStream для этого. Как мне превратить мой BufferedReader во входной поток?
2. Почему вы должны использовать reader? Почему вы не можете использовать InputStream напрямую для получения байтов?
3. @thehanseatic Вы не превращаете свой
BufferedReader
вInputStream
. Вы начинаете сInputStream
. Поскольку у вас есть двоичные данные, использование aBufferedReader
неверно.4. Большое вам спасибо за устранение путаницы. Я заставил его работать, используя описанный выше метод.
Ответ №2:
Начните с базового ввода-вывода, затем выполните ввод-вывод, затем вывод, или, если вы хотите сохранить ввод-вывод в памяти, ввод-вывод ввода-вывода (промыть и повторять, пока не останется ввода-вывода).