Я перехожу к секции ввода вывода, и есть так много классов и интерфейсов, которые меня немного путают.
Как указано в документации, InputStream
является потоком, базирующимся на байтах, тогда как Reader
является потоком, основанным на символах. Но поскольку я правильно понял, единственная разница между ними заключается в том, что Reader
считывает два байта за время вместо одного байта за раз, как это делает InputStream
.
Поэтому я не понимаю, есть ли разница:
ИспользованиеInputStream
InputStream vs Reader
byte[] bytes = new byte[2];
InputStream in = new FileInputStream("input.txt");
int bytesRead = in.read(bytes);
while(bytesRead != -1) {
doSomethingWithData(data);
bytesRead = inputstream.read(data);
}
ИспользованиеReader
Reader reader = new InputStreamReader(new FileInputStream("input.txt"));
int data = reader.read();
while (data != -1) {
doSomethingWithData(data);
data = reader.read();
}
Я действительно запутанным об этих аспектах. Объясните пожалуйста, подробно. Благодарю.
В зависимости от кодировки символ может быть 1 или 2 (или даже больше) байт (ы). – Benjamin