Java: InputStream. Входни потоци
Java, както и много съвременни езици за програмиране, поддържа внедряването на потоци за въвеждане на данни. В Java, InputStream е базовият клас за байтови потоци. Този клас е абстрактен, т.е. в процеса на програмата не можем да създадем своя инстанция. В пакета io обаче има много класове, които наследяват и разширяват функционалността на InputStream. За да използвате този клас в кода си, трябва да го импортирате от пакета java.io.InputStream. След това ще разгледаме основната функционалност, осигурена от класа InputStream, както и основните класове, които го прилагат.
съдържание
Методи за класа InputStream
Преди да се направи подробно изследване на методите на класа InputStream, трябва да се отбележи, че той изпълнява интерфейсите за затваряне и за автоматично затваряне. Интерфейсът "Затворим" ни казва, че при затваряне на конеца трябва да бъде затворен. Това се прави с помощта на метода close (). Тъй като повечето от методите InputStream класа в случай на грешка генерира тип изключение IOException, всички операции, необходими за провеждане на опита блок и метод близо () най-накрая направи единица, така че да не е сработил в зависимост от резултата от операция, за да се опита орган.
Интерфейсът за автоматично затваряне значително намалява размера на техническия код, защото позволява методът close () да се задейства автоматично и да не се добавя окончателен блок към вашия код. Ако използвате седма или по-нова версия на Java, можете да поставите InputStream в така наречената try с ресурси, която се грижи за всички операции за затваряне.
Помислете за основните методи на класа InputStream:
- int available () - Връща броя на байтовете, достъпни за четене;
- int read () - отнема от ресурса текущия байт и го върне в цяло число - ако всички байтове се четат, връща -1;
- Int чете (байт [] буфер) - Следи байтовете на разположение в споменатите буфер под формата на тип масив от байтове (брой байтове чете равно на предварително определен размер bufera- връща броя на байтовете, които могат да prochitat- ако всички налични байта четат връща -1);
- Int чете (байт [] буфер, Int офсет, Int брой байтове) - претоварване на предишния метод, прави същото, но с определен "отместване" позиция и чете колкото е определен в "брой байтове";
- дълъг пропуск (дълъг брой байтове) - пропуска определен брой байтове и връща действителния брой байтове.
InputStream се изпълнява от няколко класа, предназначени да работят с различни източници и типове данни. Дървото на наследството е представено по-долу.
Четене на файлове
Потокът байт за четене на информация от файлове се изпълнява от класа FileInputStream. За да отворите файл за четене на байтове, достатъчно е да създадете потребителски модел от този клас, като подавате името на файла на конструктора като аргумент. Ако файлът с дадено име не съществува, ще бъде отхвърлено изключение от типа FileNotFoundException.
В случай на успешно отваряне на файл, работата с него се извършва по описаните по-горе методи, тъй като FileInputStream е наследник на InputStream.
Четене на примитивни типове данни
Предишният пример описва работа с байт-стойности, които могат да бъдат интерпретирани като символи. Но какво ще стане, ако трябва да прочетем цяло число, частична или логическа стойност? За да направите това, Java InputStream се разширява индиректно от класа DataInputStream. Този клас е обвивката за InputStream, която се предава на него, когато е създадена като аргумент към конструктора. Този вид поток чете данните в двоична форма.
DataInputStream също така изпълнява интерфейса DataInput и методите за четене на примитивни типове данни. По-долу е даден списък на тези методи.
Имената на методите говорят сами - всеки от тях е предназначен за четене на определен тип данни.
Буфериран входен поток
Блокираният поток за четене на данни се изпълнява от класа BufferedInputStream в Java. Входният поток е обвит в този клас. Този клас допълва потока с буфер, който ви позволява да четете повече от един байт в даден момент. Това дава възможност за значително подобряване на ефективността на операцията. BufferedInputStream е косвен потомък на InputStream и следователно наследява всички горепосочени методи.
Този клас има два проектанта:
- BufferedInputStream (входен поток на InputStream);
- BufferedInputStream (входен поток InputStream, размер на буфера на интерфейса)
От подписа на конструкторите можете да разберете, че първата настройва размера на буфера по подразбиране, а във втория може да се зададе ръчно.
заключение
Покрихме основното изпълнение на InputStream. Ако трябва да конвертирате получените байтове в низ, тогава в Java InputStream to String (), за съжаление, не е претоварен, затова ще трябва да използвате специални помощни програми, например IOUtils от библиотеката Apache Commons.
- Java: изключения и тяхното боравене
- Как да инсталирате Java на Windows 7
- Как да актуализирам Java на Linux и Windows операционни системи?
- Първата програма Java е Hello World
- Java програмен език
- Как и защо трябва да инсталирам Java на моя компютър?
- Цигари "Java": описание и типове
- Java масиви от низове. Сортиране на масив в Java. Двуизмерен Java масив
- Java: регулярни изрази, специални знаци
- Капсулиране е какво? Капсулиране в програмирането
- Абстрактен клас и метод: описание, характеристики и особености. Каква е разликата между абстрактния…
- Java не е инсталиран: какво трябва да направя? Как да инсталирам на Ubuntu?
- Java Generics: Описание и методи
- BigInteger Java: работи с големи числа
- Java Array. Масиви в Java. Java за начинаещи
- Java: работа с файлове - писане, четене, изтриване
- Елементи на обектния модел на Java: абстрактен клас, интерфейс
- Как да активирам Java в Firefox за проблеми с заключването
- Как да премахнете Java от вашия компютър? Това е лесно!
- Java потоци: Създаване и завършване
- Как да пиша във файл в Java