DEV Community

Pergunte ao especialista - I/O

Ouvi falar de outro pacote de I/O chamado NIO. Pode me falar sobre ele?

Originalmente chamado de New I/O, o pacote NIO foi adicionado a Java por JDK 1.4. Ele dá suporte à abordagem de operações de I/O baseadas em canais. As classes NIO ficam no pacote java.nio e em seus pacotes subordinados, como java.nio.channels e java.nio.charset.
NIO se baseia em dois itens básicos: buffers e canais. O buffer armazena dados, o canal representa uma conexão aberta com um dispositivo de I/O, como um arquivo ou um soquete. Em geral, para usar o novo sistema de I/O, temos que obter um canal com um dispositivo de I/O e um buffer para armazenar dados. Então operamos com o buffer, inserindo ou exibindo dados quando necessário.
Duas outras entidades usadas pelo NIO são os conjuntos de caracteres e os
seletores. Um conjunto de caracteres define a maneira como os bytes são mapeados para caracteres. Podemos codificar uma sequência de caracteres na forma de bytes usando um codificador. E podemos decodificar uma sequência de bytes para a forma de caracteres usando um decodificador. Um selector dá suporte à I/O baseada em chaves, sem bloqueio e multiplexada. Em outras palavras, os seletores nos permitem executar I/O por vários canais. Eles são mais aplicáveis a canais baseados em soquetes.
A partir de JDK 7, NIO sofreu melhorias profundas, de tal monta que o termo NIO. 2 costuma ser usado. As melhorias incluíram três pacotes novos (java.nio.file, java.nio.file.attribute e java.nio.file.spi); várias classes, interfaces e métodos novos; e o suporte direto à I/O baseada em fluxos. Os acréscimos expandiram as maneiras como NIO pode ser usado, principalmente com arquivos.
É importante entender que NIO não substitui as classes de I/O encontradas em java.io, que estão sendo discutidas neste capítulo. Em vez disso, as classes NIO foram projetadas para complementar o sistema de I/O padrão, oferecendo uma abordagem alternativa, que pode ser benéfica em algumas circunstâncias.

Top comments (0)