package com.pb.io.buffered;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class BufereTest {/*BufferedWriter * 1.需要修飾到一個指定的輸出流(例如:FileWriter)還可以是其它的 * 2.BufferedWriter會覆蓋原有文件內容 * 3.需要清空緩沖區,使用flush()方法 * BufferedReader * 1.需要修飾到一個指定的輸入流(例如:FileReader)還可以是其它的 * 2.關閉流 */ public static void main(String[] args) { /* * BufferedWriter寫操作 */ try { //1.創建文件輸出流FileWriter FileWriter fw=new FileWriter("d:/test/test.txt"); //這里沒有加true,是清空文件重新寫入,可以加入true //2.實例化。BufferedWriter對象包裝類 BufferedWriter bw=new BufferedWriter(fw); //3.寫入內容 bw.write("大家好!"); bw.write("我要修改內容了"); bw.newLine(); //換行 bw.write("哈哈,我修改完了!"); bw.newLine(); //4.清空緩沖區 bw.flush(); //5.關閉流 bw.close(); fw.close(); System.out.結果:
==========寫入文件結束==============開始讀取文件========大家好!我要修改內容了哈哈,我修改完了!========讀取文件結束========三、字節-字符轉換流FileOutputStream是OutputStream 的直接子類,FileInputStream也是InputStream的直接子類,但是在字符流文件的兩個操作類卻有一些特殊,FileWriter并不直接是Writer的子類,而是OutputStreamWriter的子類,而FileReader也不直接是Reader的子類,是InputStreamRader的子類,那么從這兩個類的繼承關系就可以清楚的發現,不管是使用字節流還是字符流實際上最終都是以字節的形式操作輸入輸出流的。例1.實現文本文件的復制
- OutputStreamWriter:是Writer的子類,將輸出的字符流變為字節流,即:將一個字符流的輸出對象變為字節流輸出對象。
- InputStreamReader:是Reader的子類,將輸入的字節流變為字符流,即:將一個字節流的輸入對象變為字符流的輸入對象。
s1.txt內容明月幾時有,把酒問青天,不知道天上宮闕,今夕是何年。package com.pb.io.buffered;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;/* * 實現文本文件的復制 *使用BufferedReader和BufferedWriter來實現 */public class BuffereDemo1 { public static void main(String[] args) { try { //1.聲明BufferedReader和BufferedWriter對象 InputStreamReader isr=new InputStreamReader(new FileInputStream("d:/test/s1.txt"), "GB2312"); //解決中文亂碼 //FileReader fr=new FileReader("d:/test/s1.txt"); BufferedReader br=new BufferedReader(isr); OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("d:/test/s2.txt"),"GB2312"); //FileWriter fw=new FileWriter("d:/test/s2.txt"); //s2并不存在,會自動創建 BufferedWriter bw =new BufferedWriter(osw); //2.開始讀取文件 String line; //聲明變量用來用來存放讀出的內容 int num=1;//用來記錄行數 while((line=br.readLine())!=null){ System.out.println("=========正在讀出第"+num+"行==========="); System.out.println(line); System.out.println("=========正在寫入第"+num+"行==========="); bw.write(line); num++; } System.out.println("======文件寫入結束========"); //清空緩沖區 bw.flush(); //關閉輸出流 bw.close(); osw.close(); System.out.println("======文件讀取結束========"); //關閉輸入流 br.close(); isr.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
新聞熱點
疑難解答