You are currently viewing Guide to Java NIO (New I/O) with Examples

Guide to Java NIO (New I/O) with Examples

  • Post author:
  • Post category:Java
  • Post comments:0 Comments
  • Post last modified:January 20, 2024


Java NIO (New I/O) was introduced in Java 1.4 to provide a scalable and efficient I/O framework. Unlike the traditional I/O APIs in, NIO introduces the java.nio package, offering features such as non-blocking I/O and memory-mapped files. In this tutorial, we’ll explore the fundamental concepts of Java NIO and walk through practical examples to illustrate its usage.


Before starting the examples, ensure you have:

  1. Java Development Kit (JDK) installed (version 8 or higher).
  2. An Integrated Development Environment (IDE) such as Eclipse or IntelliJ.

Example 1: Buffer Basics

Buffers are central to NIO and are used for reading and writing data. Let’s create a simple example that demonstrates the basic usage of buffers:

This example demonstrates the basic operations of creating a ByteBuffer, putting data into it, flipping it for reading, and then reading the data.

Example 2: Channels and File I/O

NIO introduces the concept of channels for performing I/O operations. Let’s create an example to copy data from one file to another using channels:

In this example, we use the FileChannel class to copy data from one file to another. The transferTo method efficiently transfers data between channels.

Example 3: Asynchronous I/O

Java NIO supports asynchronous I/O operations through the AsynchronousChannel and AsynchronousFileChannel classes. Let’s create an example to read a file asynchronously:

This example demonstrates asynchronous file reading using AsynchronousFileChannel. The read method returns a Future that can be used to check if the operation is complete.


Java NIO provides a powerful and scalable I/O framework, offering features such as buffers, channels, and asynchronous I/O. This tutorial covered basic buffer operations, file I/O using channels, and asynchronous file reading. As you explore further, you’ll discover additional capabilities of Java NIO, making it a valuable tool for efficient and responsive I/O operations in your Java applications.

Leave a Reply