lqxue

          常用鏈接

          統(tǒng)計

          book

          tools

          最新評論

          [收藏]有關(guān)java I/O流的問題

          FileInputStream 和 FileReader(頭ho暈的)
          FileReader 會做編碼轉(zhuǎn)換,F(xiàn)ileInputStream會忠實于原始文件數(shù)據(jù)。任何形式的Reader都會涉及編碼。

          BufferedInputStream和BufferedOutputStream
          BufferedInputStream: 添加了功能,即緩沖輸入和支持 mark 和 reset 方法的能力。創(chuàng)建 BufferedInputStream 時即創(chuàng)建了一個內(nèi)部緩沖區(qū)數(shù)組。讀取或跳過流中的各字節(jié)時,必要時可根據(jù)所包含的輸入流再次填充該內(nèi)部緩沖區(qū),一次填充多個字節(jié)。mark 操作記錄輸入流中的某個點,reset 操作導(dǎo)致在從所包含的輸入流中獲取新的字節(jié)前,再次讀取自最后一次 mark 操作以來所讀取的所有字節(jié)。
          BufferedOutputStream:該類實現(xiàn)緩沖的輸出流。通過設(shè)置這種輸出流,應(yīng)用程序就可以將各個字節(jié)寫入基礎(chǔ)輸出流中,而不必為每次字節(jié)寫入調(diào)用基礎(chǔ)系統(tǒng)。

          BufferedReader和FileReader
          BufferedReader :由Reader類擴(kuò)展而來,提供通用的緩沖方式文本讀取,而且提供了很實用的readLine,讀取分行文本很適合,BufferedReader是針對Reader的,不直接針對文件,也不是只針對文件讀取。 
          FileReader 是由java.io.InputStreamReade擴(kuò)展來的,是針對文件讀取的。實際使用時往往用   BufferedReader   bufferedreader   =   new   BufferedReader(new   FileReader("test.conf"));先建立一個文件reader,再用BufferedReader讀。  
          FileInputStream和Reader 
          FileInputStream: 擴(kuò)展自java.io.InputStream,InputStream提供的是字節(jié)流的讀取,而非文本讀取,這是和Reader類的根本區(qū)別。用 Reader讀取出來的是char數(shù)組或者String   ,使用InputStream讀取出來的是byte數(shù)組。  
          Reader:Reader 類及其子類提供的字符流的讀取char(16位),InputStream及其子類提供字節(jié)流的讀取byte(8位),所以FileReader類是將文 件按字符流的方式讀取,F(xiàn)ileInputStream則按字節(jié)流的方式讀取文件,BufferedReader的作用是提供緩沖, InputStreamReader可以將讀如stream轉(zhuǎn)換成字符流方式(即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("復(fù)制文件: "+srcFile.length()+"字節(jié)");
                     
                      while(bufferedInputStream.read(data)!=-1)...{
                          bufferedOutputStream.write(data);
                      }
                     
                      //將緩沖區(qū)中的數(shù)據(jù)全部寫出
                      bufferedOutputStream.flush();
                     
                      System.out.println("復(fù)制完成");
                     
                      //顯示輸出BufferedStreamDemo.txt文件的內(nèi)容
                      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

          主站蜘蛛池模板: 萨嘎县| 阿瓦提县| 葵青区| 万年县| 辽阳市| 晋州市| 汝阳县| 长宁县| 汽车| 太和县| 安多县| 龙泉市| 聂荣县| 吉隆县| 平利县| 六盘水市| 阳春市| 怀化市| 绵竹市| 马鞍山市| 太仓市| 噶尔县| 京山县| 根河市| 筠连县| 鄂托克前旗| 衡东县| 河西区| 红安县| 榆林市| 汨罗市| 高尔夫| 昆山市| 蓬安县| 湾仔区| 新疆| 卢龙县| 婺源县| 荔浦县| 江川县| 剑川县|