Input Streams.read () Как это работает точно? - PullRequest
4 голосов
/ 30 января 2020

У меня следующий код:

public static void main(String[] args) throws Exception {

 FileInputStream inputStream = new FileInputStream("c:/data.txt");

 FileOutputStream outputStream = new FileOutputStream("c:/result.txt");

 while (inputStream.available() > 0) {
  int data = inputStream.read(); 
  outputStream.write(data); 
 }

 inputStream.close(); 
 outputStream.close();
}

Я не получаю в голову следующую строку: int data = inputStream.read();

Получите байты файла c: / data.txt, читать побайтово, а затем автоматически объединяться в переменные данные или inputStream.read() читает файл c:/data.txt все сразу и назначает все переменной данных?

1 Ответ

4 голосов
/ 30 января 2020

С JavaDo c:

A FileInputStream получает входные байты из файла в файловой системе. FileInputStream предназначен для чтения потоков необработанных байтов, таких как данные изображения . Для чтения потоков символов рассмотрите возможность использования FileReader

Вопрос: Получить байты файла c:/data.txt, чтение байтов по байт , а затем автоматически объединяется в переменных данных или inputStream.read() читает файл c:/data.txt все сразу и присваивает все переменной данных?

Чтобы ответить на этот вопрос, давайте возьмем пример:

try {
  FileInputStream fin = new FileInputStream("c:/data.txt");
  int i = fin.read();
  System.out.print((char) i);
  fin.close();
} catch (Exception e) {
  System.out.println(e);
}

Перед запуском вышеупомянутой программы был создан файл data.txt с текстом: Welcome to Stackoverflow.

После выполнения вышеупомянутого Запрограммируйте, чтобы консоль печатала один символ из файла 87 (в байтовой форме), четко указывая, что FileInputStream#read используется для чтения байта данных из входного потока.


Итак, FileInputStream читает данные byte на byte.

...