1. 程式人生 > >Java 輸入輸出流

Java 輸入輸出流

red 處理 adl 分享圖片 效率 人的 耗時 buffer IE

這篇不是為了系統介紹Java的輸入輸出流機制的,僅為個人筆記

作為Java小菜,每次上網搜別人的Java讀寫文件的程序參考,總覺得一頭霧水,為什麽要聲明這麽多類,規則是什麽,全然分からない,所以帶著疑問稍微了解了一下;

Java中存在兩種輸入輸出模式的類,面向字節(InputStream&OutputStream)和面向字符(Reader&Writer),另外還有一個處理文件和文件夾的類(File);

Java的輸入輸出流類采用裝飾者模式,由以上5個類衍生出許許多多其他類,這裏放一張網上搜到的圖,大家感受下

技術分享圖片

Java支持很多類型的輸入源和輸出端,但這裏不打算展開講,我只想聊聊文件的讀取和輸出。眾所周知,計算機訪問外部設備非常耗時,而訪問緩沖區則很快。因此為了提高讀寫文件的效率,除了程序與流節點之間必要的讀寫機制外,還需要增加緩沖機制。

具體例子如下:

技術分享圖片
package com.practise.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
//所有以 Stream 結尾的類都是面向字節如 FileInputStream/FileOutputStream
//以 Reader/Writer 結尾的類是面向字符 //以 File 開頭的類是面向外存 //以 Buffered 開頭的類是面向緩沖區 public class ReadAndWrite { public static void main (String[] args) { String path = "D:\\Coding\\Java\\TestJava\\testdata\\"; try { File inFile = new File(path + "in.txt"); File outFile = new
File(path + "out.txt"); InputStreamReader inSr = new InputStreamReader( new FileInputStream(inFile)); BufferedReader inBr = new BufferedReader(inSr); OutputStreamWriter outSw = new OutputStreamWriter( new FileOutputStream(outFile)); BufferedWriter outBw = new BufferedWriter(outSw); String line = ""; while ((line = inBr.readLine()) != null) { outBw.write(line + "\r\n"); } outBw.close(); outSw.close(); inBr.close(); inSr.close(); } catch(Exception e) { e.printStackTrace(); } } }
View Code

Java 輸入輸出流