標籤:通過 and style dem bsp 使用 擷取資料 lips eclips
一、緩衝流:
Java中提供了一套緩衝流,它的存在,可提高IO流的讀寫速度
緩衝流,根據流的分類分為:位元組緩衝流與字元緩衝流。
二、位元組緩衝流:
位元組緩衝流根據流的方向,共有2個:
1.寫入資料到流中,位元組緩衝輸出資料流 BufferedOutputStream
2. 讀取流中的資料,位元組緩衝輸入資料流 BufferedInputStream
它們的內部都包含了一個緩衝區,通過緩衝區讀寫,就可以提高了IO流的讀寫速度
2.1位元組緩衝輸出資料流 BufferedOutputStream類
public class BufferedOutputStreamDemo01 { public static void main(String[] args) throws IOException { //寫資料到檔案的方法 write(); } /* * 寫資料到檔案的方法 * 1,建立流 * 2,寫資料 * 3,關閉流 */ private static void write() throws IOException { //建立基本的位元組輸出資料流 FileOutputStream fileOut = new FileOutputStream("abc.txt"); //使用高效的流,把基本的流進行封裝,實現速度的提升 BufferedOutputStream out = new BufferedOutputStream(fileOut); //2,寫資料 out.write("hello".getBytes()); //3,關閉流 out.close(); }}
2.2位元組緩衝輸入資料流 BufferedInputStream類
private static void read() throws IOException { //1,建立緩衝流對象 FileInputStream fileIn = new FileInputStream("abc.txt"); //把基本的流封裝成高效的流 BufferedInputStream in = new BufferedInputStream(fileIn); //2,讀資料 int ch = -1; while ( (ch = in.read()) != -1 ) { //列印 System.out.print((char)ch); } //3,關閉 in.close(); }
練習題:利用緩衝位元組流複製檔案
package com.oracle.demo02;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;//緩衝位元組流public class BufferCopy { public static void main(String[] args) throws IOException { long time1=System.currentTimeMillis(); //1.確定資料來源 FileInputStream fis=new FileInputStream("e:\\java\\eclipse.zip"); BufferedInputStream bis=new BufferedInputStream(fis); //2.確定目標地 FileOutputStream fos=new FileOutputStream("d:\\java\\java\\dandan\\eclipse.zip"); BufferedOutputStream bos=new BufferedOutputStream(fos); //3.讀取與寫入 int len=0; byte[] bytes=new byte[1024]; while((len=bis.read(bytes))!=-1){ bos.write(bytes); } //4.重新整理並釋放資源 bos.flush(); bos.close(); bis.close(); long time2=System.currentTimeMillis(); System.out.println("所用時間:"+(time2-time1)/1000+"秒"); }}
三、字元緩衝流
1. 字元緩衝輸入資料流 BufferedReader
2. 字元緩衝輸出資料流 BufferedWriter
完成文本資料的高效的寫入與讀取的操作
3.1字元緩衝輸入資料流BufferedReader類
從字元輸入資料流中讀取文本,緩衝各個字元,從而實現字元、數組和行的高效讀取。
特殊方法:
readLine() 讀取一個文本行,包含該行內容的字串,不包含任何行終止符,如果已到達流末尾,則返回 null
package com.oracle.Demo01;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class Demo02 {//字元緩衝輸入資料流 public static void main(String[] args) throws IOException { // TODO Auto-generated method stub FileReader fr=new FileReader("e:\\java\\output.txt"); BufferedReader br=new BufferedReader(fr); //讀取一個文本行的方法 .readLine() 傳回值為String 用null來控制迴圈 //while迴圈方法讀取 String str=null; while((str=br.readLine())!=null){ //當傳回值為null時,說明讀取不到字元了 System.out.println(str); } //普通方法讀取// String str1=br.readLine();// System.out.println(str1);// String str2=br.readLine();// System.out.println(str2);// String str3=br.readLine();// System.out.println(str3); //當讀取不到內容時,會返回null br.close(); }}
3.2字元緩衝輸出資料流BufferedWriter類
將文本寫入字元輸出資料流,緩衝各個字元,從而提供單個字元、數組和字串的高效寫入。
特殊方法:
newLine() 根據當前的系統,寫入一個分行符號。
package com.oracle.Demo01;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;public class Demo01 {//字元緩衝輸出資料流 public static void main(String[] args) throws IOException { //1.確定目的地 FileWriter fw=new FileWriter("e:\\java\\output.txt",true); //2.封裝為字元緩衝流 BufferedWriter bw=new BufferedWriter(fw); //3.寫入資料 bw.write("你好嗎"); bw.newLine(); //字元緩衝輸出資料流,換行的方法:.newLine(); bw.flush(); bw.write("我很好"); //重新整理流並不會關閉流,所以可以繼續輸出 bw.close(); }}
練習題:利用緩衝流進行檔案複製
package com.oracle.Demo01;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class BufferedCopy {//緩衝字元流的複製 public static void main(String[] args) throws IOException { //1.擷取資料來源 FileReader fr=new FileReader("e:\\java\\output.txt"); //2.封裝成緩衝流 BufferedReader br=new BufferedReader(fr); //3.擷取目的地 FileWriter fw=new FileWriter("e:\\java\\copy.txt",true); //4.封裝成緩衝流 BufferedWriter bw=new BufferedWriter(fw); //5.讀取與寫入 String str=null; while((str=br.readLine())!=null){ bw.write(str); bw.newLine(); //因為讀取時是用文本行方法讀取的,所以為了格式統一,需要加入換行方法 } //6.釋放資源 bw.newLine(); bw.close(); br.close(); }}
Java第三階段學習(四、緩衝流)