lqxue

          常用鏈接

          統計

          book

          tools

          最新評論

          [收藏]有關java I/O流的問題

          FileInputStream 和 FileReader(頭ho暈的)
          FileReader 會做編碼轉換,FileInputStream會忠實于原始文件數據。任何形式的Reader都會涉及編碼。

          BufferedInputStream和BufferedOutputStream
          BufferedInputStream: 添加了功能,即緩沖輸入和支持 mark 和 reset 方法的能力。創建 BufferedInputStream 時即創建了一個內部緩沖區數組。讀取或跳過流中的各字節時,必要時可根據所包含的輸入流再次填充該內部緩沖區,一次填充多個字節。mark 操作記錄輸入流中的某個點,reset 操作導致在從所包含的輸入流中獲取新的字節前,再次讀取自最后一次 mark 操作以來所讀取的所有字節。
          BufferedOutputStream:該類實現緩沖的輸出流。通過設置這種輸出流,應用程序就可以將各個字節寫入基礎輸出流中,而不必為每次字節寫入調用基礎系統。

          BufferedReader和FileReader
          BufferedReader :由Reader類擴展而來,提供通用的緩沖方式文本讀取,而且提供了很實用的readLine,讀取分行文本很適合,BufferedReader是針對Reader的,不直接針對文件,也不是只針對文件讀取。 
          FileReader 是由java.io.InputStreamReade擴展來的,是針對文件讀取的。實際使用時往往用   BufferedReader   bufferedreader   =   new   BufferedReader(new   FileReader("test.conf"));先建立一個文件reader,再用BufferedReader讀。  
          FileInputStream和Reader 
          FileInputStream: 擴展自java.io.InputStream,InputStream提供的是字節流的讀取,而非文本讀取,這是和Reader類的根本區別。用 Reader讀取出來的是char數組或者String   ,使用InputStream讀取出來的是byte數組。  
          Reader:Reader 類及其子類提供的字符流的讀取char(16位),InputStream及其子類提供字節流的讀取byte(8位),所以FileReader類是將文 件按字符流的方式讀取,FileInputStream則按字節流的方式讀取文件,BufferedReader的作用是提供緩沖, InputStreamReader可以將讀如stream轉換成字符流方式(即reader)是reader和stream之間的橋梁

          BufferedInputStream和BufferedOutputStream的一個例子
          import java.io.*;

          public class BufferedStreamDemo...{
              public static void main(String[] args)...{
                  try...{
                      byte[] data=new byte[1];
                     
                      File srcFile=new File("BufferedStreamDemo.java");
                      File desFile=new File("BufferedStreamDemo.txt");
                     
                      BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream(srcFile));
                      BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream(desFile));
                     
                      System.out.println("復制文件: "+srcFile.length()+"字節");
                     
                      while(bufferedInputStream.read(data)!=-1)...{
                          bufferedOutputStream.write(data);
                      }
                     
                      //將緩沖區中的數據全部寫出
                      bufferedOutputStream.flush();
                     
                      System.out.println("復制完成");
                     
                      //顯示輸出BufferedStreamDemo.txt文件的內容
                      bufferedInputStream =new BufferedInputStream(new FileInputStream(new File("BufferedStreamDemo.txt")));
                      while(bufferedInputStream.read(data)!=-1)...{
                          String str=new String(data);
                          System.out.print(str);
                      }
                     
                      bufferedInputStream.close();
                      bufferedOutputStream.close();           
                     
                  }catch(ArrayIndexOutOfBoundsException e)...{
                      System.out.println("using: java useFileStream src des");
                      e.printStackTrace();
                  }catch(IOException e)...{
                      e.printStackTrace();
                  }
              }
          }

          posted on 2008-07-09 17:04 lqx 閱讀(264) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 金塔县| 岚皋县| 屏山县| 基隆市| 重庆市| 绍兴市| 阆中市| 康乐县| 广宗县| 泗水县| 冷水江市| 新龙县| 昌都县| 定西市| 丁青县| 紫金县| 天门市| 夏津县| 萝北县| 二手房| 金沙县| 丽水市| 马鞍山市| 响水县| 阳原县| 佛山市| 抚宁县| 柳江县| 平湖市| 高陵县| 迁西县| 舒城县| 刚察县| 肥西县| 蕉岭县| 甘谷县| 邢台县| 西乌| 克什克腾旗| 杨浦区| 和林格尔县|