Компютри, Програмиране
Java: InputStream. входните потоци
Java, като много от съвременните езици за програмиране, подкрепя прилагането на входни данни потоци. В Java InputStream е базов клас за байтове потоци. Този клас е абстрактно, а именно, в хода на програмата не можем да се създаде копие на него. Въпреки това, IO пакет има набор от класове, които наследяват и разширяване на функционалността на InputStream. За да използвате този клас в кода си, той трябва да бъде внесен от java.io.InputStream пакет. На следващо място, считаме, че основната функционалност, която предоставя клас InputStream и основните класове, които го прилагат.
методи InputStream клас
Преди да се пристъпи към подробно изследване на методите на класа InputStream, трябва да се спомене, че изпълнява интерфейсите и затваряща AutoCloseable. Интерфейс затваряща ни казва, че при приключване на работата с потока от него трябва задължително да бъдат затворени. Това се извършва чрез метод близо (). Тъй като повечето от методите InputStream класа в случай на грешка генерира тип изключение IOException, всички операции, необходими за провеждане на опита блок и метод близо () най-накрая направи единица, така че да не е сработил в зависимост от резултата от операция, за да се опита орган.
AutoCloseable интерфейс значително намалява размера на издръжката код, тъй като той позволява близо () метод на работа автоматично и не добавите към своя код накрая блокира. Ако използвате седмия или по-новата версия на Java, за InputStream могат да бъдат поставени в така наречения опит с ресурси, които всички операции за затваряне на потока надделява.
Помислете за основните методи за InputStream клас:
- вътр достъпно () - връща за четене брой байтове;
- вътр чете () - отнема текущата байт на ресурса и връща целочислено представяне; ако всички байта четат, -1 се връща;
- Int чете (байт [] буфер) - Следи байтовете на разположение в споменатите буфер под формата на тип масив от байтове (брой байтове за четене буфер равен на размера посочен и връща броя на байтовете чете успя и ако всички налични байта четат връща -1);
- Int чете (байт [] буфер, Int офсет, Int брой байтове) - претоварване на предишния метод, прави същото, но с определен "отместване" позиция и чете колкото е определен в "брой байтове";
- дълго прескачане (дълго Брой байтове) - броят на байта прескача и се връща на действителния брой на пропуска.
InputStream се изпълнява няколко класа, предназначени за работа с различни източници и видове данни. По-долу показва наследството дървото.
четене на файлове
Байт поток за четене на данни от файлове се изпълняват клас FileInputStream. За да отворите файл за четене на байтове, което е достатъчно, за да се създаде инстанция на класа, преминавайки към своя конструктор името на файла като аргумент. Ако файлът се прехвърля на името не съществува, тя ще хвърли изключение от тип FileNotFoundException.
В случай на успешно отворен файл, работа с тях се извършва с помощта на методите, описани по-горе, като е наследник FileInputStream InputStream.
Четене примитивни типове данни
В горния пример описва работата с байтови стойности, които могат да се тълкува като символи. Но какво, ако ние трябва да се чете цяло число, частична или булева стойност? За да направите това в Java InputStream косвено разширява клас DataInputStream. Този клас е обвивка за InputStream, която се предава към него при създаване като аргумент конструктор. Този вид конец чете данните в двоичен вид.
DataInputStream също реализира интерфейса вложени материали и неговите методи за четене на примитивни типове данни. По-долу е даден списък на тези методи.
името на метод говорят сами за себе - всеки един от тях е предназначена за четене на определен тип данни.
Буфериран входен поток
Стабилизиращ поток четене на данни се осъществява BufferedInputStream клас в Java. InputStream е обвито от този клас. Този клас допълва поток буфер, което ви позволява да се чете в същото време не една, а няколко байта. Това дава възможност значително да се подобри ефективността на работата. BufferedInputStream потомък InputStream е косвен и по този начин наследява всички методи, посочени по-горе.
Този клас има два конструктора:
- BufferedInputStream (InputStream входен поток);
- BufferedInputStream (InputStream входен поток, Int буфер размер)
Подпис на дизайнерите да се разбере, че първият определя размера на буфера подразбиране, а във втория е възможно да го зададете ръчно.
заключение
Ние прегледахме основната реализация на InputStream. Ако трябва да конвертирате получените байтове в низ в Java InputStream да String (), за съжаление, не е претоварена, така че ще трябва да се използват специални инструменти, напр IOUtils от Apache Commons библиотека.
Similar articles
Trending Now