Java NIO(New I/O)是Java 1.4版本中引入的操作系統(tǒng)通道(channel)和緩沖區(qū)(buffer)的概念,提供了非阻塞I/O操作,它是從Java傳統(tǒng)的I/O發(fā)展出來(lái)的新的I/O API,目的是為了提高速度和靈活性。
與傳統(tǒng)的I/O相比,Java NIO的最大特點(diǎn)是可以使用單線程來(lái)執(zhí)行大量的并發(fā)I/O操作。
public static void main(String[] args) { try { // 創(chuàng)建Channel SocketChannel channel = SocketChannel.open(); channel.connect(new InetSocketAddress("example.com", 80)); // 創(chuàng)建Buffer ByteBuffer buffer = ByteBuffer.allocate(1024); buffer.put("Hello, World!".getBytes()); buffer.flip(); // 發(fā)送數(shù)據(jù) channel.write(buffer); // 接收數(shù)據(jù) channel.read(buffer); // 關(guān)閉Channel channel.close(); } catch (IOException e) { e.printStackTrace(); } }
傳統(tǒng)的I/O也是使用的操作系統(tǒng)通道和緩沖區(qū),但通常使用阻塞的I/O操作,需要在一個(gè)線程上等待數(shù)據(jù)的到來(lái)。
Java NIO并不是完全替代傳統(tǒng)的I/O,而是提供了更多的選擇,可以根據(jù)具體的場(chǎng)景使用。
public static void main(String[] args) { try { // 創(chuàng)建Socket Socket socket = new Socket("example.com", 80); // 創(chuàng)建輸出流 OutputStream output = socket.getOutputStream(); // 發(fā)送數(shù)據(jù) output.write("Hello, World!".getBytes()); // 創(chuàng)建輸入流 InputStream input = socket.getInputStream(); // 接收數(shù)據(jù) byte[] buffer = new byte[1024]; int length = input.read(buffer); System.out.println(new String(buffer, 0, length)); // 關(guān)閉Socket socket.close(); } catch (IOException e) { e.printStackTrace(); } }
總的來(lái)說(shuō),Java NIO可以提高I/O操作的性能和靈活性,但需要更復(fù)雜的編程模型。
上一篇vue方法獲取src