Junior — Middle
What are the main goals and principles underlying the NIO library in Java?
sobes.tech AI
Answer from AI
The NIO (New Input/Output) library in Java was developed to improve input-output operations compared to traditional IO. The main goals and principles of NIO:
- Non-blocking I/O: allows working with channels and buffers without blocking threads, increasing performance when handling many connections.
- Buffers and channels: data is read and written through buffers, and channels provide connections to files, sockets, and other sources.
- Selectors: enable a single thread to monitor multiple channels and react to readiness events for reading or writing.
- File system operations: extended capabilities for working with paths, file attributes, and asynchronous I/O.
Example of using NIO to read a file:
Path path = Paths.get("file.txt");
try (SeekableByteChannel channel = Files.newByteChannel(path)) {
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (channel.read(buffer) > 0) {
buffer.flip();
while (buffer.hasRemaining()) {
System.out.print((char) buffer.get());
}
buffer.clear();
}
}
Thus, NIO provides a more flexible and efficient way to work with input-output, especially in networked and multithreaded applications.