Помогите разобраться я использую BufferedInputStream:
try (BufferedInputStream in = new BufferedInputStream(
new FileInputStream(path), 1024)) { // указал размер буфера 1024
// я хочу прочитать из файла сразу много байт
//иначе зачем мне был бы нужен буфер...
byte[] buffer = in. // и тут я столкнулся что все методы возвращают int
Так как же мне из BufferedInputStream получить сам массив байт
размером 1024 ради которого я создавал эту обертку? Что я не так делаю?
Дополнение к вопросу:
Я делаю:
try (BufferedInputStream in = new BufferedInputStream(
new FileInputStream(path), 1024)) {
byte[] bytes = new byte[1024];
int data = in.read(bytes,0,1024);
while (data != -1) {
sb.append(new String(bytes, "UTF8")); //StringBuilder
data = in.read();
}
System.out.println(sb);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(path), 1024) 1024 - это размер буфера как я понимаю, но и при создании массива new byte[1024] я так-же указываю длину вроде тоже размер буфера. В чем разница?Методы возвращают количество прочитанных байт. Читать надо так
count = in.read(buffer, <с какого места заполнять массив>, <сколько байт прочиать>)
В count будет количество прочитанных байтов. Байты попадут в массив buffer. Если случиться конец файла, то read вернет -1.
Размер буфера для потока указывается в конструкторе потока. По умолчанию размер буфера
private static int DEFAULT_BUFFER_SIZE = 8192;
Продвижение своими сайтами как стратегия роста и независимости