本篇內(nèi)容主要講解“java8中怎么利用通道FileChannel完成文件復(fù)制”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“java8中怎么利用通道FileChannel完成文件復(fù)制”吧!
太平網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,太平網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為太平1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的太平做網(wǎng)站的公司定做!
一、通道(channel):用于源節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的鏈接,在java nio 中負(fù)責(zé)緩沖區(qū)中的數(shù)據(jù)的傳輸,Channel本省不存儲(chǔ)數(shù)據(jù),因此需要配合緩沖區(qū)進(jìn)行傳輸*二、通道的主要實(shí)現(xiàn)類* java.nio.channel.Channel 接口:* |--FIleChannel* |--SocketChannel* |--ServerSocketChannel* |--DatagramChannel** 三、獲取通道* 1.java 針對(duì)支持通道的類提供了 getChannel()方法* 本地IO:* FileInputStream/FileOutputStream* RandomAccessFile** 網(wǎng)絡(luò)IO:* Socket * ServerSocket * DatagramSocket * 2.在JDK 1.7中的NIO.2 針對(duì)各個(gè)通道提供了靜態(tài)方法 open()** 3.在JDK 1.7 中的NIO.2 的Files 工具類的 newByteChannel()public class TestChannel {// 1.利用通道完成文件復(fù)制 @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(); // ② 分配指定大小的緩沖區(qū) ByteBuffer byteBuffer=ByteBuffer.allocate(1024); // ③ 將通道中的數(shù)據(jù)存入緩沖區(qū) while (inChannel.read(byteBuffer) !=-1){ byteBuffer.flip(); // 切換讀取數(shù)據(jù)模式 // ④ 將緩沖區(qū)中的數(shù)據(jù)寫入目標(biāo)通道中 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(); } } } } }
到此,相信大家對(duì)“java8中怎么利用通道FileChannel完成文件復(fù)制”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!