Informática, Programación
Java: InputStream. fluxos de entrada
Java, como moitas linguaxes de programación modernas, apoia a implantación de fluxos de entrada de datos. En Java InputStream é a clase base para fluxos de bytes. Esta clase é abstracto, é dicir, no curso do programa non podemos crear unha instancia del. Con todo, o paquete io ten un conxunto de clases que herdan e estender a funcionalidade do InputStream. Para usar esta clase no seu código, debe ser importado do paquete java.io.InputStream. Logo Consideramos a funcionalidade básica que ofrece unha clase InputStream, e as principais clases que a aplican.
métodos de clase InputStream
Antes de proceder a un estudo detallado dos métodos de clase InputStream, debe ser mencionado que aplica interfaces de closeable e AutoCloseable. Interface closeable dinos que tras a conclusión do traballo co fluxo de debe necesariamente ser pechado. Isto faise mediante un método de peche (). Xa que a maioría dos métodos de clase InputStream en caso dun erro xera un tipo de excepción IOException, todas as operacións necesarias para realizar un bloque de proba e un método de peche () finalmente, facer unha unidade de xeito que é disparado en función do resultado de operación para intentar corpo.
Interface AutoCloseable reduce significativamente a cantidade de mantemento do código, xa que permite close () método de traballo automaticamente e non engadir ao seu código bloque finally. Se usar a versión sétimo ou posterior de Java, un InputStream poden estar situados nos chamados intento con recursos que todas as operacións para pechar o fluxo asume.
Considero os métodos básicos de clase InputStream:
- int dispoñible () - devolve un número de bytes de lectura;
- int ler () - leva o byte cadea do recurso e retorna á representación de número enteiro; todos os bytes lidos, -1 é de retorno;
- int ler (byte [] tapón) - Le os bytes en dispoñibles referido tapón na forma dun tipo de matriz de bytes (número de bytes lidos de tapón igual ao tamaño especificado e devolve o número de bytes lidos sucedido e todo bytes dispoñibles ler, -1 devolve);
- int ler (byte [] tapón, int offset, int número de bytes) - sobrecarga do método anterior, fai o mesmo, pero con unha posición de "desprazamento" especificado e le-se tanto como se define no "número de bytes";
- longo salto (conta de bytes de lonxitude) - o número de saltos bytes e devolve o número real de perder.
InputStream é aplicado varias clases deseñadas para traballar con diferentes fontes e tipos de datos. Mostra a árbore de herdanza.
lectura de ficheiros
fluxo de bytes para ler datos desde arquivos é aplicado clase FileInputStream. Para abrir un ficheiro a lectura de bytes, o suficiente para crear unha instancia da clase, pasando ao seu construtor o nome do ficheiro como un argumento. Se o ficheiro é trasladado para o nome non existe, ha lanzar unha excepción do tipo FileNotFoundException.
En caso de éxito dun ficheiro aberto, o traballo con eles se realiza utilizando os métodos descritos enriba, como é o sucesor FileInputStream InputStream.
Lendo tipos de datos primitivos
No exemplo anterior describe o traballo con valores de byte, que pode ser interpretado como símbolos. Pero o que se precisa ler un enteiro, fracionário ou un valor booleano? Para iso en Java InputStream indirectamente expande a DataInputStream clase. Esta clase é un envoltorio para InputStream, que é pasado para el no momento da creación como un argumento constructor. Este tipo de fío le os datos en formato binario.
DataInputStream tamén implementa a interface DataInput e os seus métodos para ler tipos de datos primitivos. Abaixo está a lista destes métodos.
nomes de métodos falan por si - cada un deles está deseñado para ler un determinado tipo de datos.
fluxo de entrada tamponada
lectura de datos fluxo de tapón realízase clase BufferedInputStream en Java. InputStream é envolto por esta clase. Esta clase complementa o fluxo de buffer, o que lle permite ler ao mesmo tempo, non un, senón varios bytes. Isto fai posible para mellorar significativamente o rendemento da operación. BufferedInputStream descendente InputStream é unha indirecto e, polo tanto, herda todos os métodos mencionados anteriormente.
Esta clase ten dous construtores:
- BufferedInputStream (fluxo de entrada InputStream);
- BufferedInputStream (InputStream fluxo de entrada, tapón int tamaño)
Sinatura dos deseñadores pode ser entendido que a primeira especifica o tamaño do buffer estándar, e no segundo é posible configurar-lo manualmente.
conclusión
Revisamos a realización básica do InputStream. Se precisa converter os bytes recibidos para unha cadea en Java InputStream para String (), por desgraza, non está resaltado, polo que terá que usar ferramentas especiais, por exemplo IOUtils da biblioteca Apache Commons.
Similar articles
Trending Now