Отправка части строки в сеть

268
22 сентября 2017, 18:21

Имеем сокет, с ним имеем DataInputStream и DataOutputStream. Так-же есть BufferedReader, который читает текст из файла, но через out.writeUTF передать прочитанную строку не выходит, т.к. она слишком большая. Такой вопрос, можно ли сделать буфер для чтения, к примеру в 10кб за раз?

Answer 1

BufferedReader нетрудно заменить на BufferedInputStream и тогда всё можно очень просто сделать:

protected long copy(InputStream is, OutputStream os) throws IOException {
    long bytesWritten = 0;
    byte[] buffer = new byte[1024 * 10];
    int bytesRead = 0;
    while ((bytesRead = is.read(buffer)) > 0) {
        if (bytesRead > 0) os.write(buffer, 0, bytesRead);
        bytesWritten += bytesRead;
    }
    return bytesWritten;
}
READ ALSO
Как передать массив байт по Json

Как передать массив байт по Json

Приветствую! Есть необходимость передать массив байтов по jsonНо у меня это не получается

409
Проблемы с кодировкой ответа сервера в eclipse

Проблемы с кодировкой ответа сервера в eclipse

Из java-сервлета посылаю на сторонний web-сервер GET запрос, получаю в ответ html код, запихиваю этот код в строкуСмотрю в строку -а русские буквы...

288
Проблема при установке JRE

Проблема при установке JRE

Вот что выдает при установке: JRE Error code:1618

229
Выход за пределы массива Java StringIndexOutOfBoundsException

Выход за пределы массива Java StringIndexOutOfBoundsException

Задача состоит в том, чтобы найти и напечатать подстроку наибольшей длины из одинаковых символовВыдает ошибку, не могу понять, почему происходит...

320