1. 程式人生 > >java字節緩沖流和字符緩沖流

java字節緩沖流和字符緩沖流

ati 操作 new str while pri tput 內部 創建

一.字節緩沖流

1.介紹

字節緩沖流根據流的方向,分為:

1.寫入數據到流中,字節緩沖輸出流 BufferedOutputStream

2.讀取流中的數據,字節緩沖輸入流 BufferedInputStream

它們的內部都包含了一個緩沖區,通過緩沖區讀寫,就可以提高了IO流的讀寫速度

2.字節緩沖輸出流BufferedOutputStream

構造方法:

public BufferedOutputStream(OutputStream out):創建一個新的緩沖輸出流,以將數據寫入指定的底層輸出流。

    //字節輸出緩沖流
    public static void method01() throws
IOException{ //創建基本的字節輸出流 FileOutputStream fos=new FileOutputStream("E:\\java\\demo.txt"); BufferedOutputStream bos=new BufferedOutputStream(fos); //寫數據 fos.write(100); //釋放資源 bos.close(); }

3.字節緩沖輸入流 BufferedInputStream

構造方法:

public BufferedInputStream(InputStream in)

//字節輸入緩沖流
    public static void method02() throws IOException{
        //創建緩沖流對象
        FileInputStream fis=new FileInputStream("E:\\java\\demo.txt");
        BufferedInputStream bis=new BufferedInputStream(fis);
        //讀數據
        int len=0;
        while((len=bis.read())!=-1){
            System.out.println((
char)len); } //釋放資源 bis.close(); }

4. 復制文件

    public static void method04() throws IOException{
        //明確數據源
        FileInputStream fis=new FileInputStream("E:\\java\\aaa.zip");
        BufferedInputStream bis=new BufferedInputStream(fis);
        //明確目的地
        FileOutputStream fos=new FileOutputStream("E:\\java\\a\\aaa.zip");
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        //開始復制
        long time1=System.currentTimeMillis();
        int len=0;
        byte[] ch=new byte[1024];
        while((len=bis.read(ch))!=-1){
            bos.write(ch,0,len);
        }
        long time2=System.currentTimeMillis();
        System.out.println(time2-time1);
        //釋放資源
        bos.close();
        bis.close();
    }

二.字符緩沖流

1.介紹

字符緩沖輸入流 BufferedReader

字符緩沖輸出流 BufferedWriter

完成文本數據的高效的寫入與讀取的操作

2.字符緩沖輸出流 BufferedWriter

void newLine() 根據當前的系統,寫入一個換行符

public static void method01() throws IOException{
        //明確目的地
        FileWriter fw =new FileWriter("E:\\java\\demo01.txt");
        //添加緩沖流
        BufferedWriter bw=new BufferedWriter(fw);
        //寫入文件
        //  windows: \r\n
        //   linux:  \n
        //  newline();
        System.out.println(System.in);
        bw.write("你好");
        bw.newLine();
        bw.flush();
        bw.write("java");
        bw.newLine();
        bw.flush();
        bw.write("中國");
        bw.newLine();
        //釋放資源
        bw.close();
    }

3.字符緩沖輸入流 BufferedReader

public String readLine() 讀取一個文本行,包含該行內容的字符串,不包含任何行終止符,如果已到達流末尾,則返回 null

public static void method02() throws IOException{
        //明確數據源
        FileReader fr=new FileReader("E:\\java0929\\demo01.txt");
        //添加緩沖流
        BufferedReader br=new BufferedReader(fr);
        //開始讀取文件
        String line=br.readLine();
        System.out.println(line);
        line=br.readLine();
        System.out.println(line);
        line=br.readLine();
        System.out.println(line);
        line=br.readLine();
        System.out.println(line);
        //釋放資源
        br.close();
}
public static void method03() throws IOException{
        //明確數據源
        FileReader fr=new FileReader("E:\\java\\demo01.txt");
        //添加緩沖流
        BufferedReader br=new BufferedReader(fr);
        //開始讀取文件
        String line=null;
        while((line=br.readLine())!=null){
            System.out.print(line);
        }
        //釋放資源
        br.close();
}

4.復制文件

public static void copy() throws IOException{
        //明確數據源
        FileReader fr=new FileReader("E:\\java0929\\demo02.txt");
        BufferedReader br=new BufferedReader(fr);
        //明確目的地
        FileWriter fw=new FileWriter("E:\\java0929\\c\\demo02.txt");
        BufferedWriter bw=new BufferedWriter(fw);
        //開始復制
        String line=null;
        int linenum=0;
        while((line=br.readLine())!=null){
            linenum++;
            bw.write(linenum+" "+line);
            bw.newLine();
            bw.flush();
        }
        //釋放資源
        bw.close();
        br.close();
    }

java字節緩沖流和字符緩沖流