摘要:文件復(fù)制練習(xí)一讀一寫明確數(shù)據(jù)源數(shù)據(jù)的目的地文件復(fù)制的步驟創(chuàng)建字節(jié)緩沖輸入流對象構(gòu)造方法中傳遞字節(jié)輸入流創(chuàng)建字節(jié)緩沖輸出流對象構(gòu)造方法中傳遞字節(jié)輸出流使用字節(jié)緩沖輸入流對象中的方法讀取文件使用字節(jié)緩沖輸出流中的方法把讀取的數(shù)據(jù)寫入到內(nèi)部緩沖區(qū)
package com.itheima.demo02.CopyFile;
import java.io.*;
/*
文件復(fù)制練習(xí):一讀一寫 明確: 數(shù)據(jù)源: c:1.jpg 數(shù)據(jù)的目的地: d:1.jpg 文件復(fù)制的步驟: 1.創(chuàng)建字節(jié)緩沖輸入流對象,構(gòu)造方法中傳遞字節(jié)輸入流 2.創(chuàng)建字節(jié)緩沖輸出流對象,構(gòu)造方法中傳遞字節(jié)輸出流 3.使用字節(jié)緩沖輸入流對象中的方法read,讀取文件 4.使用字節(jié)緩沖輸出流中的方法write,把讀取的數(shù)據(jù)寫入到內(nèi)部緩沖區(qū)中 5.釋放資源(會先把緩沖區(qū)中的數(shù)據(jù),刷新到文件中) 文件的大小:780,831 字節(jié) 一次讀寫一個(gè)字節(jié):32毫秒 使用數(shù)組緩沖讀取多個(gè)字節(jié),寫入多個(gè)字節(jié):5毫秒
*/
public class Demo02CopyFile {
public static void main(String[] args) throws IOException { long s = System.currentTimeMillis(); //1.創(chuàng)建字節(jié)緩沖輸入流對象,構(gòu)造方法中傳遞字節(jié)輸入流 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("c:1.jpg")); //2.創(chuàng)建字節(jié)緩沖輸出流對象,構(gòu)造方法中傳遞字節(jié)輸出流 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:1.jpg")); //3.使用字節(jié)緩沖輸入流對象中的方法read,讀取文件 //一次讀取一個(gè)字節(jié)寫入一個(gè)字節(jié)的方式 /*int len = 0; while((len = bis.read())!=-1){ bos.write(len); }*/ //使用數(shù)組緩沖讀取多個(gè)字節(jié),寫入多個(gè)字節(jié) byte[] bytes = new byte[1024]; int len = 0; while((len = bis.read(bytes))!=-1){ bos.write(bytes,0,len); } bos.close(); bis.close(); long e = System.currentTimeMillis(); System.out.println("復(fù)制文件共耗時(shí):"+(e-s)+"毫秒"); }
}
不實(shí)用緩沖流的方式
package com.itheima.demo02.CopyFile;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
文件復(fù)制練習(xí):一讀一寫 明確: 數(shù)據(jù)源: c:1.jpg 數(shù)據(jù)的目的地: d:1.jpg 文件復(fù)制的步驟: 1.創(chuàng)建一個(gè)字節(jié)輸入流對象,構(gòu)造方法中綁定要讀取的數(shù)據(jù)源 2.創(chuàng)建一個(gè)字節(jié)輸出流對象,構(gòu)造方法中綁定要寫入的目的地 3.使用字節(jié)輸入流對象中的方法read讀取文件 4.使用字節(jié)輸出流中的方法write,把讀取到的字節(jié)寫入到目的地的文件中 5.釋放資源 文件的大小:780,831 字節(jié) 一次讀寫一個(gè)字節(jié):6043毫秒 使用數(shù)組緩沖讀取多個(gè)字節(jié),寫入多個(gè)字節(jié):10毫秒
*/
public class Demo01CopyFile {
public static void main(String[] args) throws IOException { long s = System.currentTimeMillis(); //1.創(chuàng)建一個(gè)字節(jié)輸入流對象,構(gòu)造方法中綁定要讀取的數(shù)據(jù)源 FileInputStream fis = new FileInputStream("c:1.jpg"); //2.創(chuàng)建一個(gè)字節(jié)輸出流對象,構(gòu)造方法中綁定要寫入的目的地 FileOutputStream fos = new FileOutputStream("d:1.jpg"); //一次讀取一個(gè)字節(jié)寫入一個(gè)字節(jié)的方式 //3.使用字節(jié)輸入流對象中的方法read讀取文件 /*int len = 0; while((len = fis.read())!=-1){ //4.使用字節(jié)輸出流中的方法write,把讀取到的字節(jié)寫入到目的地的文件中 fos.write(len); }*/ //使用數(shù)組緩沖讀取多個(gè)字節(jié),寫入多個(gè)字節(jié) byte[] bytes = new byte[1024]; //3.使用字節(jié)輸入流對象中的方法read讀取文件 int len = 0;//每次讀取的有效字節(jié)個(gè)數(shù) while((len = fis.read(bytes))!=-1){ //4.使用字節(jié)輸出流中的方法write,把讀取到的字節(jié)寫入到目的地的文件中 fos.write(bytes,0,len); } //5.釋放資源(先關(guān)寫的,后關(guān)閉讀的;如果寫完了,肯定讀取完畢了) fos.close(); fis.close(); long e = System.currentTimeMillis(); System.out.println("復(fù)制文件共耗時(shí):"+(e-s)+"毫秒"); }
}
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/76244.html
摘要:字符轉(zhuǎn)換流原理字節(jié)流編碼表。和作為子類,僅作為操作字符文件的便捷類存在。源目的先根據(jù)需求明確要讀,還是要寫。屏幕網(wǎng)絡(luò)完全可以明確具體要使用哪個(gè)流對象。明確四是否需要額外功能呢額外功能轉(zhuǎn)換嗎轉(zhuǎn)換流。高效嗎緩沖區(qū)對象。 01轉(zhuǎn)換流概述 * A: 轉(zhuǎn)換流概述 * a: 轉(zhuǎn)換流概述 * OutputStreamWriter 是字符流通向字節(jié)流的橋梁:可使用指定的字符編碼...
摘要:用兩個(gè)字節(jié)表示。兩個(gè)字節(jié)第一個(gè)字節(jié)是負(fù)數(shù)第二個(gè)字節(jié)可能是正數(shù)目前最常用的中文碼表,萬的中文和符號。用兩個(gè)字節(jié)表示,其中的一部分文字,第一個(gè)字節(jié)開頭是,第二字節(jié)開頭是最新的中文碼表,目前還沒有正式使用。 01輸入和輸出 * A:輸入和輸出 * a: 參照物 * 到底是輸入還是輸出,都是以Java程序?yàn)閰⒄? * b: Output * 把內(nèi)存...
摘要:后綴名是父類名。將字符讀取流對象作為參數(shù)傳遞給緩沖對象的構(gòu)造函數(shù)。讀寫失敗讀取關(guān)閉失敗寫入關(guān)閉失敗字節(jié)流操作從文件系統(tǒng)中的某個(gè)文件中獲得輸入字節(jié)。和字節(jié)流需求,想要操作圖片數(shù)據(jù)。 概述 IO流用來處理設(shè)備之間的數(shù)據(jù)傳輸,Java對數(shù)據(jù)的操作是通過流的方式,Java用于操作流的對象都在IO包中。 流按操作數(shù)據(jù)分為兩種:字節(jié)流與字符流流按流向分為:輸入流、輸出流 IO流常用基類 字符流的抽...
摘要:場景實(shí)際業(yè)務(wù)中可能出現(xiàn)重復(fù)消費(fèi)一個(gè)可讀流的情況,比如在前置過濾器解析請求體,拿到進(jìn)行相關(guān)權(quán)限及身份認(rèn)證認(rèn)證通過后框架或者后置過濾器再次解析請求體傳遞給業(yè)務(wù)上下文。 場景 實(shí)際業(yè)務(wù)中可能出現(xiàn)重復(fù)消費(fèi)一個(gè)可讀流的情況,比如在前置過濾器解析請求體,拿到body進(jìn)行相關(guān)權(quán)限及身份認(rèn)證;認(rèn)證通過后框架或者后置過濾器再次解析請求體傳遞給業(yè)務(wù)上下文。因此,重復(fù)消費(fèi)同一個(gè)流的需求并不奇葩,這類似于js...
摘要:是字符流通向字節(jié)流的橋梁可使用指定的將要寫入流中的字符編碼成字節(jié)。編碼把能看懂的變成看不懂繼續(xù)自父類的共性成員方法寫入單個(gè)字符。刷新該流的緩沖。關(guān)閉此流,但要先刷新它。構(gòu)造方法創(chuàng)建使用默認(rèn)字符編碼的。 package com.itheima.demo03.ReverseStream; import java.io.FileOutputStream;import java.io.IOEx...
閱讀 2339·2023-04-25 14:29
閱讀 1464·2021-11-22 09:34
閱讀 2707·2021-11-22 09:34
閱讀 3394·2021-11-11 10:59
閱讀 1856·2021-09-26 09:46
閱讀 2227·2021-09-22 16:03
閱讀 1925·2019-08-30 12:56
閱讀 482·2019-08-30 11:12