您好,登錄后才能下訂單哦!
本篇內容主要講解“java8中怎么利用通道FileChannel完成文件復制”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“java8中怎么利用通道FileChannel完成文件復制”吧!
一、通道(channel):用于源節點與目標節點的鏈接,在java nio 中負責緩沖區中的數據的傳輸,Channel本省不存儲數據,因此需要配合緩沖區進行傳輸*二、通道的主要實現類* java.nio.channel.Channel 接口:* |--FIleChannel* |--SocketChannel* |--ServerSocketChannel* |--DatagramChannel** 三、獲取通道* 1.java 針對支持通道的類提供了 getChannel()方法* 本地IO:* FileInputStream/FileOutputStream* RandomAccessFile** 網絡IO:* Socket * ServerSocket * DatagramSocket * 2.在JDK 1.7中的NIO.2 針對各個通道提供了靜態方法 open()** 3.在JDK 1.7 中的NIO.2 的Files 工具類的 newByteChannel()public class TestChannel {// 1.利用通道完成文件復制 @Test public void test1(){ FileInputStream inputStream= null; FileOutputStream outputStream= null; FileChannel inChannel= null; FileChannel outChannel= null; try { inputStream = new FileInputStream("1.jpg"); outputStream = new FileOutputStream("2.jpg"); // ① 獲取通道 inChannel = inputStream.getChannel(); outChannel = outputStream.getChannel(); // ② 分配指定大小的緩沖區 ByteBuffer byteBuffer=ByteBuffer.allocate(1024); // ③ 將通道中的數據存入緩沖區 while (inChannel.read(byteBuffer) !=-1){ byteBuffer.flip(); // 切換讀取數據模式 // ④ 將緩沖區中的數據寫入目標通道中 outChannel.write(byteBuffer); byteBuffer.clear(); } } catch (IOException e) { e.printStackTrace(); } finally {if (outChannel!=null){try { outChannel.close(); } catch (IOException e) { e.printStackTrace(); } }if (inChannel!=null){try { inChannel.close(); } catch (IOException e) { e.printStackTrace(); } }if (outputStream!=null){try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } }if (inputStream!=null){try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
到此,相信大家對“java8中怎么利用通道FileChannel完成文件復制”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。