您好,登錄后才能下訂單哦!
假如需要復制一張圖片,一份word,一個rar包。可以以字節流的方式,讀取文件,然后輸出到目標文件夾。
以復制一張4M的圖片舉例。
每次讀一個字節:
ch = (char)System.in.read(); //讀入一個字符,返回讀到的字節的int表示方式,讀到末尾返回-1
復制時候一個字節一個字節的讀取、寫入,這樣是很慢的。設置一個用來緩沖的字符數組,會讓復制的過程快很多(每次讀入的字節變多)。
方便閱讀,類的名稱用中文描述
import java.io.*; public class 字節流的緩沖區 { public static void main(String[] args) throws Exception { FileInputStream in=new FileInputStream("E:\\photo\\IMG.jpg"); //FileOutputStream中的文件不存在,將自動新建文件 OutputStream out=new FileOutputStream("E:\\test.jpg"); byte[] buff=new byte[1024]; int b; long beginTime=System.currentTimeMillis(); while ((b=in.read(buff))!=-1) { out.write(buff,0,b); } long endTime=System.currentTimeMillis(); System.out.println("運行時長為: "+(endTime-beginTime)+"毫秒"); in.close(); out.close(); System.out.println("正常運行!"); } }
這里設置的字節數組是1024個字節。復制的時間比一個字節一個字節的復制快很多。
//封裝了FileOutputStream管道之后,三種函數參數 //write(b) 寫入一個b //write(byte[] b) 將字節數組全部寫入 //write(byte[] b,int off,int len) 例如write(byteTest,0,len)表示數組byteTest中從0開始長度為len的字節 //一般都用第3個
字節緩沖流
用BufferedInputStream和BufferedOutputStream來封裝FileInputStream和FileOutputStream
方便閱讀,類的名稱用中文描述
import java.io.*; public class 字節緩沖流 { public static void main(String[] args) throws Exception { BufferedInputStream bis=new BufferedInputStream(new FileInputStream("E:\\photo\\IMG.jpg")); BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("E:\\test.jpg")); int len; long begintime=System.currentTimeMillis(); while((len=bis.read())!=-1) { bos.write(len); } long endtime=System.currentTimeMillis(); System.out.println("運行時間為:"+(endtime-begintime)+"毫秒"); bis.close(); bos.close(); System.out.println("正常運行"); } }
將String類的對象用字節流寫入文件時
import java.io.*; public class outFile { public static void main(String[] args) throws Exception { FileOutputStream out=new FileOutputStream("example.txt"); String str="測試"; byte[] b=str.getBytes(); for(int i=0;i<b.length;i++) { out.write(b[i]); } out.close(); System.out.println("輸出成功"); } }
當需要以附加的形式寫入文件時
FileOutputStream out=new FileOutputStream("example.txt",true);
轉換流
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String x = in.read();
InputSteamReader和OutputStreamReader為轉換流,前者將字節流轉化為字符流,后者將字符流轉化為字節流
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。