1. 程式人生 > >字符流

字符流

trac 3.1 str -1 亂碼 microsoft generate off 示例

    字符流:
1.1Reader/Write(字符流的輸入和輸出流,相對於java文件而言)
1.2能夠用TXT編輯器打開的文件,且不亂碼就是字符文件可以用字符流來操作
而不能打開的文件,則是字節文件。
2.輸入流Reader類(抽象類)
2.1常用方法

    int read();  //讀取單個字符

    int read(byte [] c)  //返回實際讀取的字符數

    int read(char[] c,int off,int len)    

    void colse()    //關閉流

2.2FileReader類(是Reader的子類)

  2.2.1 讀取方法:File f=new File("文件路徑");

           Reader fr=new FileReader("文件路徑"/f);

    示例:

    Reader fr=null;
     StringBuffer sbf=null;
       try {
        fr=new FileReader("D:\\Test\\test.txt");
        sbf=new StringBuffer();
        int length;
        while((length=fr.read())!=-1){
         char c=(char)length;
        sbf.append(c);
     }
       System.out.println(sbf.toString()); //輸出數據
      } catch (FileNotFoundException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
}   catch (IOException e) {
     // TODO Auto-generated catch block
      e.printStackTrace();
       }finally{
         if(fr!=null){
         try {
       fr.close();
       } catch (IOException e) {
     // TODO Auto-generated catch block
         e.printStackTrace();
   }
     }
     }

  2.3字符輸入流(BufferedReader類)

    2.3.1:優勢:提高了讀取文件的效率。

    2.3.2:創建對象:

      Reader fr=new FileReader("文件路徑(相對或絕對路徑)");

      BufferedReader br=new BufferedReader(fr);或BufferedReader br=new BufferedReader(new FileReader(“文件路徑(相對或絕對路徑)”));  

    2.3.3:   br.readerLine();    讀取一行數據

    示例:

        Reader fr=null;
       BufferedReader br=null;
      try {
      //先創建一個FileReader對象
       fr=new FileReader("D:\\Test\\test.txt");

       //在創建一個BufferedReader對象
      br=new BufferedReader(fr);

      //讀取每一行數據
      String line=br.readLine();
      while(line!=null){
         System.out.println(line);
       line=br.readLine();//再次賦值進行判斷
         }
       } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
     } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
       }finally{
         try {
     br.close(); //先關
    fr.close();
       } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
           }
           }

3.字符輸出流Writer類

    3.1常用方法:

      write(String s);      將str字符串裏包含的字符輸出到指定的輸出流中

      write(String s,int off,int len)

      void close()    關閉輸出流

      void flush()   刷新輸出流

    3.2FilerWrite(是write的子類)

    3.3讀取方法:

      Writer fr=new FileWriter("文件路徑");

    示例:

    Writer fw=null;

     try {
    //創建一個FileWrite對象
       fw=new FileWriter("D:\\Test\\簡介.txt");

     //寫入信息
       fw.write("我熱愛我的團隊!"+"\r\n");
       fw.write("張三"+"\r\n"); //\r\n進行換行
      fw.write("18歲");
       fw.flush(); //刷新緩沖區
      } catch (IOException e) {
    // TODO Auto-generated catch block
     e.printStackTrace();
        }finally{
        try {
        fw.close();
       } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
      }

    3.4:字符輸出流BufferedWrite類  

      3.4.1:創建對象:

       BufferdWriter bw=new BufferedWriter(new FileWrite(“文件路徑”))  

    示例:

    Writer fw=null;
    BufferedWriter bw=null;

      try {
        fw=new FileWriter("D:\\Test\\hello.txt");

          bw=new BufferedWriter (fw);

         //寫入信息
       bw.write("大家好");
       bw.write("我正在學習BufferedWriter。");
       bw.newLine(); //換行
       bw.write("請多多指教!");
      bw.flush(); //刷新緩沖區
      bw.close(); //關閉流
      System.out.println("成功插入數據!");

      //讀取文件內容
      FileReader fr=new FileReader("D:\\Test\\hello.txt");
      StringBuffer sbf=new StringBuffer();
      int length;
       while((length=fr.read())!=-1){
       char c=(char)length;
       sbf.append(c);
       }
     System.out.println(sbf.toString());
    } catch (IOException e) {
     // TODO Auto-generated catch block
      e.printStackTrace();
       }

字符流