Класс FileInputStream позволяет читать содержимое файла как поток байтов. Вот простой пример:
InputStream input = new FileInputStream("c:\\data\\input-text.txt");
int data = input.read();
while(data != -1) {
//do something with data...
doSomethingWithData(data);
data = input.read();
}
input.close();
Примечание: для ясности здесь пропущено правильное исключение. Чтобы узнать больше о правильной обработке исключений, перейдите на Java IO Exception Handling.
Метод read() FileInputStream возвращает int, который содержит байтовое значение байта. Если метод read() возвращает -1, больше нет данных для чтения в потоке, и его можно закрыть. То есть -1 в качестве значения int, а не -1 в качестве значения байта. Здесь есть разница!
Я тоже сделал эту ошибку - метод read() фактически возвращает один байт данных, а не количество байтов, которое можно прочитать. http://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html#read%28%29 – wattostudios
@Andrew Thompson Я думаю, что вы читаете документацию неправильного метода. Вы читаете одно для ** public int read (byte [] b) **, где, поскольку я имею в виду ** public int read() ** – GrowinMan
Существует несколько различных методов 'read()'. Один возвращает один байт; другие заполняют массив и возвращают _number_ байтов, которые были прочитаны. –