天天看點

IO流常用方式總結讀寫檔案字元流位元組流轉換其他功能總結 – 吧需要用的功能放在最外面特殊地

因為位元組流和字元流的區分,有些功能類似的流的寫法相似,這裡總結一下常用的流的寫法,以免忘記。如後續有學習或用到新的流,再增加或修改。

因為這裡隻整理流的用法,具體讀寫方法read,write等略過。

這裡統一使用一個檔案參數來代替檔案參數

String fileName = "C:\\Users\\CC\\Desktop\\test111.txt";
           

讀寫檔案

位元組流讀取檔案

//  InputStream in = new FileInputStream(new File(fileName));
//  BufferedInputStream bi = new BufferedInputStream(in);
    BufferedInputStream bi = new BufferedInputStream(new FileInputStream(new File(fileName)));
           

字元流讀取檔案

BufferedReader br = new BufferedReader(new FileReader(new File(fileName)));
           

位元組流輸出檔案

BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(new File(fileName)));
           

字元流輸出檔案

BufferedWriter bw = new BufferedWriter(new FileWriter(new File(fileName)));
           

字元流位元組流轉換

InputStreamReader OutputStreamWriter

BufferedReader br1 = new BufferedReader(new InputStreamReader(new FileInputStream(new File(fileName))));
    BufferedWriter bw1 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(fileName))));
           

其他功能總結 – 吧需要用的功能放在最外面

讀數字 DataInputStream(in) – 僅有位元組流

DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(new File(fileName))));
    DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(new File(fileName))));
           

記憶體 – 位元組流僅有輸入

String s = "fadfadfadfkajgaowerjtwnjerfanjgfkasjdgfklasnjdfkljasdfkl";
StringBufferInputStream sbis = new StringBufferInputStream(s);
StringReader sr = new StringReader(s);
StringWriter sw = new StringWriter();
           

跟蹤行号 – 僅有輸入

LineNumberInputStream lnis = new LineNumberInputStream(new BufferedInputStream(new FileInputStream(new File(fileName))));
LineNumberReader lnr = new LineNumberReader(new BufferedReader(new FileReader(new File(fileName))));
           

壓縮檔案 – 僅有位元組流,一般檔案中有字元,是以可以用轉換流

GZIP單個檔案壓縮

BufferedReader brGZIP = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream("test.gz"))));
BufferedWriter bwGZIP = new BufferedWriter(new OutputStreamWriter(new GZIPOutputStream(new FileOutputStream("test.gz"))));
           

Zip支援多個檔案壓縮(校驗和 略)

ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream("test.zip")));
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream("test.zip")));
           

特殊地

随機通路檔案 – 讀寫一體,使用同一個類

RandomAccessFile raf = new RandomAccessFile(new File(fileName),"rw");
RandomAccessFile rafR = new RandomAccessFile(new File(fileName),"r");
           

流内容分割

StreamTokenizer将InputStream分隔成一系列記号

StreamTokenizer st = new StreamTokenizer(new FileInputStream(new File(fileName)));
StreamTokenizer st1 = new StreamTokenizer(new FileReader(new File(fileName)));
           

StringTokenizer将String分割成一系列标記,操作簡單,複雜的請用上面的StreamTokenizer

格式化輸出 – 僅輸出

PrintStream ps = new PrintStream(new FileOutputStream(new File(fileName)));
PrintWriter pw = new PrintWriter(new FileWriter(new File(fileName)));
           

readLine方法

請使用BufferedReader 或 Scanner 而不是 DataInputStream