Java字節(jié)流 從文件輸入輸出到文件過程解析
假如需要復(fù)制一張圖片,一份word,一個rar包。可以以字節(jié)流的方式,讀取文件,然后輸出到目標(biāo)文件夾。
以復(fù)制一張4M的圖片舉例。
每次讀一個字節(jié):
ch = (char)System.in.read(); //讀入一個字符,返回讀到的字節(jié)的int表示方式,讀到末尾返回-1
復(fù)制時候一個字節(jié)一個字節(jié)的讀取、寫入,這樣是很慢的。設(shè)置一個用來緩沖的字符數(shù)組,會讓復(fù)制的過程快很多(每次讀入的字節(jié)變多)。
方便閱讀,類的名稱用中文描述
import java.io.*;
public class 字節(jié)流的緩沖區(qū) {
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("正常運行!");
}
}
這里設(shè)置的字節(jié)數(shù)組是1024個字節(jié)。復(fù)制的時間比一個字節(jié)一個字節(jié)的復(fù)制快很多。
//封裝了FileOutputStream管道之后,三種函數(shù)參數(shù) //write(b) 寫入一個b //write(byte[] b) 將字節(jié)數(shù)組全部寫入 //write(byte[] b,int off,int len) 例如write(byteTest,0,len)表示數(shù)組byteTest中從0開始長度為len的字節(jié) //一般都用第3個
字節(jié)緩沖流
用BufferedInputStream和BufferedOutputStream來封裝FileInputStream和FileOutputStream
方便閱讀,類的名稱用中文描述
import java.io.*;
public class 字節(jié)緩沖流 {
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類的對象用字節(jié)流寫入文件時
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("輸出成功");
}
}
當(dāng)需要以附加的形式寫入文件時
FileOutputStream out=new FileOutputStream("example.txt",true);
轉(zhuǎn)換流
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String x = in.read();
InputSteamReader和OutputStreamReader為轉(zhuǎn)換流,前者將字節(jié)流轉(zhuǎn)化為字符流,后者將字符流轉(zhuǎn)化為字節(jié)流
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java基于IDEA實現(xiàn)qq郵件發(fā)送小程序
這篇文章主要介紹了Java基于IDEA實現(xiàn)qq郵件發(fā)送小程序功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09
springboot使用jasypt加密庫實現(xiàn)數(shù)據(jù)庫加解密示例代碼
這篇文章主要給大家介紹了關(guān)于springboot使用jasypt加密庫實現(xiàn)數(shù)據(jù)庫加解密的相關(guān)資料,Jasypt是一個用于配置文件加密的Java庫,它可以用來加密和解密配置文件中的敏感信息,如數(shù)據(jù)庫密碼、API?密鑰等,需要的朋友可以參考下2024-04-04
教你如何用Eclipse創(chuàng)建一個Maven項目
這篇文章主要介紹了教你如何用Eclipse創(chuàng)建一個Maven項目,文中有非常詳細的代碼示例,對正在入門Java的小伙伴們是非常有幫助的喲,需要的朋友可以參考下2021-05-05
使用cmd根據(jù)WSDL網(wǎng)址生成java客戶端代碼的實現(xiàn)
這篇文章主要介紹了使用cmd根據(jù)WSDL網(wǎng)址生成java客戶端代碼的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03

