Записывать данные в файл из буферного средства чтения?

#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 . Поскольку у вас есть двоичные данные, использование a BufferedReader неверно.

4. Большое вам спасибо за устранение путаницы. Я заставил его работать, используя описанный выше метод.

Ответ №2:

Начните с базового ввода-вывода, затем выполните ввод-вывод, затем вывод, или, если вы хотите сохранить ввод-вывод в памяти, ввод-вывод ввода-вывода (промыть и повторять, пока не останется ввода-вывода).