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 閱讀(262) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 铜川市| 武隆县| 琼结县| 阳朔县| 互助| 德惠市| 乌拉特前旗| 屏南县| 彭泽县| 洛宁县| 辽宁省| 聊城市| 台东县| 攀枝花市| 东山县| 沛县| 昂仁县| 连州市| 三都| 东台市| 黔东| 贵溪市| 贵南县| 都昌县| 万山特区| 舒城县| 峨眉山市| 麦盖提县| 营口市| 北宁市| 泰顺县| 崇仁县| 新安县| 福清市| 望江县| 南汇区| 正定县| 神木县| 荆州市| 孝义市| 白水县|