JAVA基本IO流框架
Java常用IO流.jpg
字節(jié)流整體可分為帶緩沖區(qū)的流和不帶緩沖區(qū)的流
可分為逐字節(jié)復(fù)制的流和逐塊復(fù)制的流
(塊其實(shí)就是指byte)
常用的一共有4種復(fù)制方式!
示例:復(fù)制源文件文本數(shù)據(jù)到目標(biāo)文本中
以下列出主要的代碼
//逐字節(jié)復(fù)制
//定義file類(lèi)分別指向源文件和目標(biāo)文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
//從傳入的中的文件對(duì)象中獲得讀取字節(jié)或輸出字節(jié)
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);
//調(diào)用read()方法,將文本內(nèi)容逐字節(jié)讀取到read中
int read;
while ((read = fis.read()) != -1)
{//調(diào)用write方法逐字節(jié)輸出到目標(biāo)文件中
fos.write(read);
}
//關(guān)閉流
fis.close();
fos.close();
//逐塊復(fù)制
//定義file類(lèi)分別指向源文件和目標(biāo)文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
//從傳入的中的文件對(duì)象中獲得讀取字節(jié)或輸出字節(jié)
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);
//定義一個(gè)能容納1024個(gè)字節(jié)的數(shù)據(jù)byte數(shù)組來(lái)接收要讀取的文本數(shù)據(jù)
byte[] bs = new byte[1024];
//定義read表示接收的字節(jié)長(zhǎng)度
int read;
//從輸入流中將最多 1024個(gè)字節(jié)的數(shù)據(jù)讀入一個(gè) byte 數(shù)組中
while ((read = fis.read(bs)) != -1)
{//將 byte 數(shù)組中從0 開(kāi)始的 read 個(gè)字節(jié)寫(xiě)入此目標(biāo)文件中
fos.write(bs, 0, read);
}
//關(guān)閉流
fis.close();
fos.close();
//帶緩沖區(qū)的逐字節(jié)復(fù)制
//定義file類(lèi)分別指向源文件和目標(biāo)文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
//從傳入的中的文件對(duì)象中獲得讀取字節(jié)或輸出字節(jié)
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);
//包裝流,把操作文件的流增加緩沖區(qū)的功能(直接覆蓋了文件流)
BufferedInputStream bis = new BufferedInputStream(fis);;
BufferedOutputStream bos = new BufferedOutputStream(fos);
//用read逐字節(jié)接收數(shù)據(jù)
int read;
//調(diào)用read()方法逐字節(jié)讀取數(shù)據(jù)到緩沖區(qū)中
while ((read = bis.read()) != -1)
{//write方法將緩沖區(qū)中的數(shù)據(jù)逐字節(jié)輸出到文本文件中
bos.write(read);
}
//關(guān)閉流,釋放系統(tǒng)資源
bis.close();
bos.close();
//帶緩沖區(qū)的逐塊復(fù)制
//定義file類(lèi)分別指向源文件和目標(biāo)文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
//從傳入的中的文件對(duì)象中獲得讀取字節(jié)或輸出字節(jié)
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);
//包裝流,把操作文件的流增加緩沖區(qū)的功能(直接覆蓋了文件流)
BufferedInputStream bis = new BufferedInputStream(fis);;
BufferedOutputStream bos = new BufferedOutputStream(fos);
//定義一個(gè)能容納1M個(gè)字節(jié)的數(shù)據(jù)byte數(shù)組來(lái)接收要讀取的文本數(shù)據(jù)
byte[] bs = new byte[1024 * 1024];
//len表示要寫(xiě)入的字節(jié)數(shù)。
int len = 0;
//調(diào)用read()方法逐字塊讀取byte數(shù)組到緩沖區(qū)中(每次讀1M)
while ((len = bis.read(bs, 0, 1024)) != -1)
{//將指定 byte 數(shù)組中從0 開(kāi)始的 len 個(gè)字節(jié)寫(xiě)入此緩沖的輸出流
bos.write(bs, 0, len);
}
//關(guān)閉流釋放操作系統(tǒng)資源,包含flush的功能
//bos.flush()將緩沖區(qū)的數(shù)據(jù)沖入到輸出文本中,只有output需要沖出
bis.close();
bos.close();