4.6.1. FilelnputStream

Класс FilelnputStream используется для ввода данных из файлов. В приведенном ниже примере создается два объекта этого класса, использующие один и тот же дисковый файл.

InputStream fO = new FileInputStream("/autoexec.bat"); File f = new File(7autoexec.bat"): InputStream fl = new FilelnputStream(f);

Когда создается объект класса FilelnputStream, он одновременно с этим открывается для чтения. FilelnputStream замещает шесть методов абстрактного класса InputStream. Попытки применить к объекту этого класса методы mark и reset приводят к возбуждению исключения IOException. В приведенном ниже примере показано, как можно читать одиночные байты, массив байтов и поддиапазон массива байтов. В этом примере также показано, как методом available можно узнать, сколько еще осталось непрочитанных байтов, и как с помощью метода skip можно пропустить те байты, которые вы не хотите читать.

import javaio.*; import j ava.util. *; class FilelnputStreamS {

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

InputStream fl = new FilemputStream("www.root.com/default.htm"); size = fl .availableO;

System.out.println("Bcero доступно байтов: " + size); System.out.println("4HTaeM первую 1/4 часть файла"); for (int i=0; i < size/4; i++) { System.out.print((char) fl .readO);

}

System.out.println("Tenepb доступно : " + fl .availableO); System.out.println("4HTaeM следующую 1/8 часть "); byte b[] = new byte[size/8]; if(n.read(b)!=b.length){ System.err.println("Onm6Ka");

}

String tmpstr = new String(b, 0, 0, b.length); System.out.println(tmpsu*);

System.out.println("Ocr^ocb доступным: " + fl.available()); System.out.println("nponycTHTb следующую 1/4 часть"); fl.skip(size/4);

System.out.println( "Осталось доступными: " + fl.available()); System.out.prmtm("4HTaeM 1/16 часть в конец массива"); if (fl.read(b, b.length-size/16, size/16) != size/16) { System.err.printm("Onm6Ka"); }

System.out.println("OcTanocb доступно: " + fl.availableO); fl .close();

}}