Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Classe Java BufferedInputStream

Classe Java BufferedInputStream


Neste tutorial, aprenderemos sobre o Java BufferedInputStream e seus métodos com a ajuda de exemplos.

O BufferedInputStream classe do java.io O pacote é usado com outros fluxos de entrada para ler os dados (em bytes) com mais eficiência.

Ele estende o InputStream classe abstrata.



Funcionamento de BufferedInputStream


O BufferedInputStream mantém um buffer interno de 8192 bytes .

Durante a operação de leitura em BufferedInputStream , um pedaço de bytes é lido do disco e armazenado no buffer interno. E dos bytes do buffer interno são lidos individualmente.

Assim, o número de comunicação com o disco é reduzido. É por isso que a leitura de bytes é mais rápida usando o BufferedInputStream .

Criar um BufferedInputStream


Para criar um BufferedInputStream , devemos importar o java.io.BufferedInputStream pacote primeiro. Uma vez que importamos o pacote, aqui é como podemos criar o fluxo de entrada.
// Creates a FileInputStream
FileInputStream file = new FileInputStream(String path);

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

No exemplo acima, criamos um BufferdInputStream chamado buffer com o FileInputStream chamado arquivo .

Aqui, o buffer interno tem o tamanho padrão de 8192 bytes. No entanto, também podemos especificar o tamanho do buffer interno.
// Creates a BufferedInputStream with specified size internal buffer
BufferedInputStream buffer = new BufferInputStream(file, int size);

O buffer ajudará a ler os bytes dos arquivos mais rapidamente.

Métodos de BufferedInputStream


O BufferedInputStream classe fornece implementações para diferentes métodos presentes no InputStream classe.

Método read()


Suponha que temos um arquivo chamado input.txt com o seguinte conteúdo.
This is a line of text inside the file.

Vamos tentar ler o arquivo usando 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();
        }
    }
}



Saída
This is a line of text inside the file.

No exemplo acima, criamos um fluxo de entrada em buffer chamado buffer juntamente com FileInputStream . O fluxo de entrada está vinculado ao arquivo input.txt .
FileInputStream file = new FileInputStream("input.txt");
BufferedInputStream buffer = new BufferedInputStream(file);

Aqui, usamos o read() método para ler uma matriz de bytes do buffer interno do leitor em buffer.

Método available()


Para obter o número de bytes disponíveis no fluxo de entrada, podemos usar o available() método. Por exemplo,
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();
      }
   }
}

Saída
Available bytes at the beginning: 39
Available bytes at the end: 36

No exemplo acima,
  1. Primeiro usamos o available() método para verificar o número de bytes disponíveis no fluxo de entrada.
  2. Então, usamos o read() método 3 vezes para ler 3 bytes do fluxo de entrada.
  3. Agora, depois de ler os bytes, verificamos novamente os bytes disponíveis. Desta vez, os bytes disponíveis diminuíram em 3.

Método skip()


Para descartar e pular o número especificado de bytes, podemos usar o skip() método. Por exemplo,
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();
      }
   }
}

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

No exemplo acima, usamos o skip() método para pular 5 bytes do fluxo de entrada do arquivo. Portanto, os bytes 'T' , 'h' , 'i' , 's' e ' ' são ignorados do fluxo de entrada.

método close()


Para fechar o fluxo de entrada em buffer, podemos usar o close() método. Uma vez que o close() é chamado, não podemos usar o fluxo de entrada para ler os dados.

Outros métodos de BufferedInputStream

Métodos Descrições
mark() marcar a posição no fluxo de entrada até a qual os dados foram lidos
reset() retorna o controle ao ponto no fluxo de entrada onde a marca foi definida

Para saber mais, visite Java BufferdInputStream (documentação oficial do Java).

Java

  1. Palavra-chave final Java
  2. Java instanceof Operator
  3. Classe estática aninhada em Java
  4. Classe anônima Java
  5. Classe Java Singleton
  6. Reflexão Java
  7. Classe Java ObjectOutputStream
  8. Classe Java BufferedReader
  9. Genéricos Java
  10. Classe de arquivo Java