1. 程式人生 > >【Java】字節流-從文件輸入,輸出到文件

【Java】字節流-從文件輸入,輸出到文件

jpg 方式 bsp while row 緩沖 print close pan

假如需要復制一張圖片,一份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);

【Java】字節流-從文件輸入,輸出到文件