У меня есть программа, которая открывает файлInputStream, читая его и записывая его в выходной поток.Java FileInputStream ограничен 65535 байтами
Я использую AIX.
Когда я бегу с терминала, у меня нет проблем. Однако, когда мое стороннее приложение запускает его, оно сталкивается с проблемой, когда FileInputStream только считывает первые 65535 байт из файла, а затем следующий вызов функции .read() возвращает -1, хотя файл немного больше, чем 65535 байт (это 68372 байта). Это приводит к усеченному выходному файлу.
Мой вопрос в том, что может вызвать это ограничение? Он не является внутренним пределом FileInputStream. Я подозреваю, что есть параметр java, который устанавливается где-то, но я не могу на всю жизнь определить, где. Возможно ли это как ограничение ОС?
Вот мой основной код:
OutputStream lOut = new FileOutputStream("/home/fileOut.txt");
FileInputStream fIn = new FileInputStream(new File("/home/fileIn.txt"));
int ch;
byte[] buf = new byte[65536];
while((ch = fIn.read(buf)) > 0)
{
lOut.write(buf);
}
fIn.close();
lOut.close();
Трудно поверить. NB Ваш вызов для записи неверен. Это должно быть 'lOut.write (buf, 0 'ch);' Странный размер буфера тоже. Вы должны использовать силу два. – EJP
Просто nit: это должно быть 'lOut.write (buf, 0, ch);' –
И почему вы все-таки переопределили 'cp'? – chrylis