Java NIO (New Input/Output) 是 Java 提供的一種新的 I/O 操作機制,相比于傳統的流式 I/O,NIO 是面向緩沖區的,可以更加高效地進行數據的讀取和寫入操作。
NIO 的核心是三個概念:緩沖區(Buffer)、通道(Channel)和選擇器(Selector)。
// 示例代碼:使用 NIO 進行文件復制 public static void main(String[] args) throws IOException { // 獲取源文件和目標文件 File sourceFile = new File("source.txt"); File targetFile = new File("target.txt"); // 獲取輸入流和輸出流 FileInputStream fis = new FileInputStream(sourceFile); FileOutputStream fos = new FileOutputStream(targetFile); // 獲取通道 FileChannel sourceChannel = fis.getChannel(); FileChannel targetChannel = fos.getChannel(); // 創建緩沖區 ByteBuffer buffer = ByteBuffer.allocate(1024); // 循環讀取數據并寫入目標文件 while (true) { // 清空緩沖區 buffer.clear(); // 從源通道讀取數據 int read = sourceChannel.read(buffer); // 讀到末尾退出循環 if (read == -1) { break; } // 切換緩沖區為讀模式 buffer.flip(); // 將數據寫入目標通道 targetChannel.write(buffer); } // 關閉通道和流 sourceChannel.close(); sourceChannel.close(); fos.close(); fos.close(); }
使用 NIO 進行文件復制的步驟如下:
1. 獲取源文件和目標文件的引用;
2. 獲取輸入流和輸出流;
3. 獲取源通道和目標通道;
4. 創建緩沖區;
5. 循環讀取源通道中的數據,直至讀到末尾;
6. 將緩沖區切換為讀模式;
7. 將讀取到的數據寫入目標通道中;
8. 關閉源通道、目標通道、輸入流和輸出流。