Пожалуйста, помогите мне понять следующий код Java - PullRequest
0 голосов
/ 03 февраля 2012

Я учу Java с Java: полный справочник.В настоящее время я работаю над примерами из главы: Ввод / вывод: изучение java.io. Я не понимаю несколько строк кода из приведенного ниже примера.Может ли кто-нибудь помочь мне с этим примером.

import java.io.*;

class FileInputStreamDemo
{
public static void main(String args[]) throws IOException
{
InputStream f = new FileInputStream("E://SomeRandomTextFile.txt");
System.out.println("Total available bytes : " + size = f.available());

int n = size/40;
System.out.println("First" + n + " bytes of file one read() at a time");

for(int i=0; i<n; i++)
{
System.out.println((char) f.read());
}

System.out.println("\n Still available: "+ f.available());
System.out.println("Reading the text " + n + " with one read(b[])");
byte b[] = new byte[n];

if(f.read(b) != n)
{
System.err.println("coudn't read" + n + "bytes.");
}
System.out.println(new String(b,0,n));
}

В приведенном выше коде я не понимаю последние пять строк кода.

Каков результат

f.read(b) 

Что такое

System.err

и

Каков результат

new String(b,0,n);

Ответы [ 2 ]

1 голос
/ 04 февраля 2012

f.read(b) приводит к целому числу длины 1 или одному байту.

System.err находит окно с ошибкой и затем помещает туда сообщение, так же, как System.out находит окно консоли и затем помещает туда сообщение.

new String(b,0,n) будет использовать конструктор String (byte [] bytes, int offset, int length) для создания строки с байтовым массивом b, начиная со смещения 0 и имея длину n.

1 голос
/ 04 февраля 2012

Должно быть:

if(f.read(b) != n)

Это вызов метода для чтения байтов из файла в буфер.Из javadoc:

Считывает некоторое количество байтов из входного потока и сохраняет их в буферном массиве b.

Эта строка:

new String(b,0,n);

создает новый String из байтов внутри буфера b, начиная с индекса 0 и занимая следующие n байтов.Из javadoc:

Создает новую строку путем декодирования указанного подмассива байтов, используя кодировку платформы по умолчанию.

И, наконец, это:

System.err

возвращает ссылку на стандартный поток ошибок программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...