Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Класс BufferedInputStream в Java

Класс BufferedInputStream

В этом руководстве мы узнаем о Java BufferedInputStream и его методах с помощью примеров.

BufferedInputStream класс java.io package используется с другими входными потоками для более эффективного чтения данных (в байтах).

Он расширяет InputStream абстрактный класс.

<час>

Работа BufferedInputStream

BufferedInputStream поддерживает внутренний буфер размером 8192 байта .

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

Следовательно, количество обращений к диску уменьшается. Вот почему чтение байтов происходит быстрее при использовании BufferedInputStream .

<час>

Создать BufferedInputStream

Чтобы создать BufferedInputStream , мы должны импортировать java.io.BufferedInputStream пакет первый. Как только мы импортируем пакет, мы можем создать входной поток.

// Creates a FileInputStream
FileInputStream file = new FileInputStream(String path);

// Creates a BufferedInputStream
BufferedInputStream buffer = new BufferInputStream(file);

В приведенном выше примере мы создали BufferdInputStream названный буфер с FileInputStream названный файл .

Здесь внутренний буфер имеет размер по умолчанию 8192 байта. Однако мы также можем указать размер внутреннего буфера.

// Creates a BufferedInputStream with specified size internal buffer
BufferedInputStream buffer = new BufferInputStream(file, int size);

буфер поможет быстрее читать байты из файлов.

<час>

Методы BufferedInputStream

BufferedInputStream класс предоставляет реализации для различных методов, представленных в InputStream класс.

Метод чтения()

Предположим, у нас есть файл с именем input.txt. со следующим содержанием.

This is a line of text inside the file.

Попробуем прочитать файл с помощью BufferedInputStream .

import java.io.BufferedInputStream;
import java.io.FileInputStream;

class Main {
    public static void main(String[] args) {
        try {

            // Creates a FileInputStream
            FileInputStream file = new FileInputStream("input.txt");

            // Creates a BufferedInputStream
            BufferedInputStream input = new BufferedInputStream(file);

            // Reads first byte from file
            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();
        }
    }
}

Вывод

This is a line of text inside the file.

В приведенном выше примере мы создали буферизованный входной поток с именем buffer. вместе с FileInputStream . Входной поток связан с файлом input.txt. .

FileInputStream file = new FileInputStream("input.txt");
BufferedInputStream buffer = new BufferedInputStream(file);

Здесь мы использовали read() метод для чтения массива байтов из внутреннего буфера буферизованного считывателя.

<час>

доступный() метод

Чтобы получить количество доступных байтов во входном потоке, мы можем использовать available() метод. Например,

import java.io.FileInputStream;
import java.io.BufferedInputStream;

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 file = new FileInputStream("input.txt");
         
         // Creates a BufferedInputStream
         BufferedInputStream buffer = new BufferedInputStream(file);

         // Returns the available number of bytes
         System.out.println("Available bytes at the beginning: " + buffer.available());

         // Reads bytes from the file
         buffer.read();
         buffer.read();
         buffer.read();

         // Returns the available number of bytes
         System.out.println("Available bytes at the end: " + buffer.available());

         buffer.close();
      }

      catch (Exception e) {
         e.getStackTrace();
      }
   }
}

Вывод

Available bytes at the beginning: 39
Available bytes at the end: 36

В приведенном выше примере

  1. Сначала мы используем available() метод для проверки количества доступных байтов во входном потоке.
  2. Затем мы использовали read() метод 3 раза, чтобы прочитать 3 байта из входного потока.
  3. Теперь, после чтения байтов, мы снова проверили доступные байты. На этот раз доступный байт уменьшился на 3.
<час>

Метод skip()

Чтобы отбросить и пропустить указанное количество байтов, мы можем использовать skip() метод. Например,

import java.io.FileInputStream;
import java.io.BufferedInputStream;

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 file = new FileInputStream("input.txt");

         // Creates a BufferedInputStream
         BufferedInputStream buffer = new BufferedInputStream(file);

         // Skips the 5 bytes
         buffer.skip(5);
         System.out.println("Input stream after skipping 5 bytes:");

         // Reads the first byte from input stream
         int i = buffer.read();
         while (i != -1) {
            System.out.print((char) i);

            // Reads next byte from the input stream
            i = buffer.read();
         }

         // Closes the input stream
         buffer.close();
      }

      catch (Exception e) {
         e.getStackTrace();
      }
   }
}

Вывод

Input stream after skipping 5 bytes: is a line of text inside the file.

В приведенном выше примере мы использовали skip() способ пропустить 5 байтов из входного потока файла. Следовательно, байты 'T' , 'h' , 'i' , 's' и ' ' пропускаются из входного потока.

<час>

Метод close()

Чтобы закрыть буферизованный входной поток, мы можем использовать close() метод. Как только close() вызывается метод, мы не можем использовать входной поток для чтения данных.

<час>

Другие методы BufferedInputStream

Методы Описания
mark() отметить позицию во входном потоке, до которой были прочитаны данные
reset() возвращает элемент управления в точку во входном потоке, где была установлена ​​метка

Чтобы узнать больше, посетите Java BufferdInputStream (официальная документация по Java).


java

  1. Окончательное ключевое слово Java
  2. Оператор экземпляра Java
  3. Вложенный статический класс Java
  4. Анонимный класс Java
  5. Одноэлементный класс Java
  6. Java-отражение
  7. Класс Java ObjectOutputStream
  8. Java-класс BufferedReader
  9. Дженерики Java
  10. Класс файла Java