La diferencia entre Java NIO e IO
Las principales diferencias entre Java NIO e IO son las siguientes:
1. NIO se creó para permitir a los programadores de Java implementar E/S de alta velocidad sin escribir código nativo personalizado. NIO puede lograr mejoras significativas en la velocidad al descargar las operaciones de E/S que consumen más tiempo (es decir, llenar y recuperar buffers) al sistema operativo. Las operaciones de IO tradicionales se bloquean, lo que afecta gravemente la velocidad de ejecución del programa.
2,. Comparación de transmisión versus bloque. La diferencia más importante entre la biblioteca de E/S original (en java.io.*) y NIO es la forma en que se empaquetan y transfieren los datos. Como se mencionó anteriormente, la E/S original procesa los datos en forma de flujo, mientras que NIO procesa los datos en forma de bloques.
Los sistemas de E/S orientados al flujo procesan los datos un byte a la vez. Un flujo de entrada produce un byte de datos y un flujo de salida consume un byte de datos. Es muy fácil crear filtros para la transmisión de datos. También es relativamente sencillo encadenar varios filtros de modo que cada filtro sea responsable sólo de una parte de un único mecanismo de procesamiento complejo. La desventaja es que la E/S orientada al flujo suele ser bastante lenta.
3. Un sistema de E/S orientado a bloques procesa datos en bloques. Cada operación produce o consume un bloque de datos en un solo paso. Procesar datos en fragmentos es mucho más rápido que procesar datos en bytes (transmisión). Pero la E/S orientada a bloques carece de algo de la elegancia y simplicidad de la E/S orientada a flujos.