Java FileInputStream (с примери)

В този урок ще научим за Java FileInputStream и неговите методи с помощта на примери.

В FileInputStreamкласа на java.ioпакета може да се използва за четене на данни (в байтове) от файлове.

Той разширява InputStreamабстрактния клас.

Преди да научим за FileInputStream, не забравяйте да знаете за Java Files.

Създайте FileInputStream

За да създадем входен поток на файл, първо трябва да импортираме java.io.FileInputStreamпакета. След като импортираме пакета, ето как можем да създадем поток за въвеждане на файлове в Java.

1. Използване на пътя към файла

 FileInputStream input = new FileInputStream(stringPath); 

Тук създадохме входен поток, който ще бъде свързан с файла, посочен от пътя.

2. Използване на обект от файла

 FileInputStream input = new FileInputStream(File fileObject); 

Тук създадохме входен поток, който ще бъде свързан с файла, посочен от fileObject.

Методи на FileInputStream

В FileInputStreamклас осигурява приложения за различни методи представят в InputStreamклас.

метод read ()

  • read() - чете един байт от файла
  • read(byte() array) - чете байтовете от файла и съхранява в посочения масив
  • read(byte() array, int start, int length) - чете от файла броя на байтовете, равен на дължината, и съхранява в посочения масив, започвайки от началната позиция

Да предположим, че имаме файл с име input.txt със следното съдържание.

 This is a line of text inside the file. 

Нека се опитаме да прочетем този файл с помощта на FileInputStream.

 import java.io.FileInputStream; public class Main ( public static void main(String args()) ( try ( FileInputStream input = new FileInputStream("input.txt"); System.out.println("Data in the file: "); // Reads the first byte int i = input.read(); while(i != -1) ( System.out.print((char)i); // Reads next byte from the file i = input.read(); ) input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Изход

 Данни във файла: Това е ред с текст във файла. 

В горния пример създадохме поток за вход на файл с име input. Входният поток е свързан с файла input.txt .

 FileInputStream input = new FileInputStream("input.txt"); 

За да прочетем данни от файла, използвахме read()метода в цикъл while.

на разположение () Метод

За да получим броя на наличните байтове, можем да използваме available()метода. Например,

 import java.io.FileInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream input = new FileInputStream("input.txt"); // Returns the number of available bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 3 bytes from the file input.read(); input.read(); input.read(); // Returns the number of available bytes System.out.println("Available bytes at the end: " + input.available()); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Изход

 Налични байтове в началото: 39 Налични байтове в края: 36 

В горния пример,

  1. Първо използваме available()метода, за да проверим броя на наличните байтове във входния поток на файла.
  2. След това използвахме read()метода 3 пъти, за да прочетем 3 байта от входния поток на файла.
  3. Сега, след като прочетохме байтовете, отново проверихме наличните байтове. Този път наличните байтове намаляха с 3.

skip () Метод

За да отхвърлим и пропуснем посочения брой байтове, можем да използваме skip()метода. Например,

 import java.io.FileInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream input = new FileInputStream("input.txt"); // Skips the 5 bytes input.skip(5); System.out.println("Input stream after skipping 5 bytes:"); // Reads the first byte int i = input.read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the file i = input.read(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Изход

 Входящ поток след пропускане на 5 байта: е ред с текст във файла. 

В горния пример използвахме skip()метода, за да пропуснем 5 байта данни от входния поток на файла. Следователно байтовете, представляващи текста "Това", не се четат от входния поток.

метод close ()

За да затворим входния поток на файла, можем да използваме close()метода. След като close()методът бъде извикан, не можем да използваме входния поток за четене на данни.

Във всички горни примери използвахме close()метода, за да затворим входния поток на файла.

Други методи на FileInputStream

Методи Описания
finalize() гарантира, че close()методът е извикан
getChannel() връща обекта, FileChannelсвързан с входния поток
getFD() връща дескриптора на файла, свързан с входния поток
mark() маркирайте позицията във входния поток, до която са прочетени данните
reset() връща контролата към точката във входния поток, където е зададена маркировката

За да научите повече, посетете Java FileInputStream (официална документация за Java).

Интересни статии...