因為位元組流和字元流的區分,有些功能類似的流的寫法相似,這裡總結一下常用的流的寫法,以免忘記。如後續有學習或用到新的流,再增加或修改。
因為這裡隻整理流的用法,具體讀寫方法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