乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      File,FileInputStream,FileReader,InputStreamRe...

       懷念真正的我 2010-12-14
      File,FileInputStream,FileReader,InputStreamReader,BufferedReader 的使用和區(qū)別

       

      1. File類
        
      1 ) File 類介紹(《 core java 》 638 頁)

      File 類封裝了對(duì)用戶機(jī)器的文件系統(tǒng)進(jìn)行操作的功能。例如,可以用 File 類獲得文件上次修改的時(shí)間移動(dòng),或者對(duì)文件進(jìn)行刪除、重命名。換句話說,流類關(guān)注的是文件內(nèi)容,而 File 類關(guān)注的是文件在磁盤上的存儲(chǔ)。

      File 類的主要方法有: getName(),getCanonicalFile(),lastModified(),isDerector(),isFile(),getPath() 等;

      2 )File 類與 FileInputStream 類的區(qū)別:

       

      流類關(guān)注的是文件內(nèi)容,而 File 類關(guān)注的是文件在磁盤上的存儲(chǔ)。

       

      File 不屬于文件流 , 只能代表一個(gè)文件或是目錄的路徑名而已。

      如果處理文件或者目錄名,就應(yīng)該使用 File 對(duì)象,而不是字符串。

      2.       FileInputStream 類

      1 ) FileInputStream 類介紹:

      以字節(jié)為單位(非 unicode )的流處理。字節(jié)序列即:二進(jìn)制數(shù)據(jù)。與編碼無關(guān),不存在亂碼問題。

      FileInputStream 類的主要方法有:

      Read (), read ( byte[] b ), read ( byte[],int off,int len ) ,available();

       

      2 ) FileInputStream 類與 FileReader 類的區(qū)別:

      兩個(gè)類的構(gòu)造函數(shù)的形式和參數(shù)都是相同的,參數(shù)為 File 對(duì)象或者表示路徑的 String ,它們到底有何區(qū)別

      呢?

      FileInputStream :以字節(jié)流方式讀??; FileReader :把文件轉(zhuǎn)換為字符流讀入;
      InputStream提供的是字節(jié)流的讀取,而非文本讀取,這是和Reader類的根本區(qū)別。用Reader讀取出

      來的是char數(shù)組或者String ,使用InputStream讀取出來的是byte數(shù)組。


      Reader類及其子類提供的字符流的讀取char(16位,unicode編碼),inputStream及其子類提供字節(jié)

      流的讀取byte(8位),所以FileReader類是將文件按字符流的方式讀取,F(xiàn)ileInputStream則按字節(jié)流的方

      式讀取文件;InputStreamReader可以將讀如stream轉(zhuǎn)換成字符流方式,是reader和stream之間的橋梁.


      最初Java是不支持對(duì)文本文件的處理的,為了彌補(bǔ)這個(gè)缺憾而引入了Reader和Writer兩個(gè)類。
        

      FileInputStream 類以二進(jìn)制輸入 / 輸出, I/O 速度快且效率搞,但是它的 read ()方法讀到

      的是一個(gè)字節(jié)(二進(jìn)制數(shù)據(jù)),很不利于人們閱讀。     而 FileReader 類彌補(bǔ)了這個(gè)缺陷,可以以文本格式輸入 / 輸出,非常方便;

      比如可以使用while((ch = filereader.read())!=-1 ) 循環(huán)來讀取文件;可以使用 BufferedReader 的 readLine() 方法一行一行的讀取文本。

      當(dāng)我們讀寫文本文件的時(shí)候,采用 Reader 是非常方便的,比如 FileReader , InputStreamReader 和 BufferedReader 。其中最重要的類是 InputStreamReader ,它是字節(jié)轉(zhuǎn)換為字符的橋

      梁。 你可以在構(gòu)造器重指定編碼的方式,如果不指定的話將采用底層操作系統(tǒng)的默認(rèn)編碼方式,例如

      GBK 等. FileReader 與 InputStreamReader 涉及編碼轉(zhuǎn)換 ( 指定編碼方式或者采用 os 默認(rèn)編碼 ) ,可

      能在不同的平臺(tái)上出現(xiàn)亂碼現(xiàn)象!而 FileInputStream 以二進(jìn)制方式處理,不會(huì)出現(xiàn)亂碼現(xiàn)象 .

      3 )如果處理純文本文件,建議使用 FileReader ,因?yàn)楦奖?,也更適合閱讀;但是要注意編碼問題!
      其他情況(處理非純文本文件),F(xiàn)ileInputStream是唯一的選擇;FileInputStream是進(jìn)Socket通訊時(shí)會(huì)

      用到很多,如將文件流是Stream的方式傳向服務(wù)器!
        
      3.       FileReader 類

      1)    FileReader 類介紹:

      InputStreamReader 類的子類,所有方法( read ()等)都從父類 InputStreamReader 中繼承而來;

      2)    與 InputStreamReader 類的區(qū)別:

      該類與它的父類 InputStreamReader 的主要不同在于構(gòu)造函數(shù),主要區(qū)別也就在于構(gòu)造函數(shù)!從

      InputStreamReader 的構(gòu)造函數(shù)中看到,參數(shù)為 InputStream 和編碼方式,可以看出,當(dāng)要指定編碼方式時(shí),必須使用 InputStreamReader 類;而 FileReader 構(gòu)造函數(shù)的參數(shù)與 FileInputStream 同,為 File 對(duì)象或表示 path 的 String ,可以看出,當(dāng)要根據(jù) File 對(duì)象或者 String 讀取一個(gè)文件時(shí),用 FileReader ;我想 FileReader 子類的作用也就在于這個(gè)小分工吧。

      3)    一般用法:

      FileReader fr = new FileReader("ming.txt");
         char[] buffer = new char[1024];
         int ch = 0;
         while((ch = fr.read())!=-1 )
         {
          System.out.print((char)ch);
         }

      4.       InputStreamReader 類

      以文本格式輸入 / 輸出,可以指定編碼格式;

      主要方法:

      getEncoding (),read();

      一般用法:

      InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));
         while((ch = isr.read())!=-1)
         {
          System.out.print((char)ch);
         }

      5. BufferedReader 類

      BufferedReader 由Reader類擴(kuò)展而來,提供通用的緩沖方式文本讀取,而且提供了很實(shí)用的readLine,

      讀取分行文本很適合,BufferedReader是針對(duì)Reader的,不直接針對(duì)文件,也不是只針對(duì)文件讀取。
      一般用法:
          
      BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
        String data = null;
        while((data = br.readLine())!=null)
        {
         System.out.println(data);
        }
      6.    總結(jié)以上內(nèi)容,得出比較好的規(guī)范用法:

      1)    File file = new File ("hello.txt");

      FileInputStream in=new FileInputStream(file);

      2)    File file = new File ("hello.txt");

      FileInputStream in=new FileInputStream(file);

      InputStreamReader inReader=new InputStreamReader(in);

      BufferedReader bufReader=new BufferedReader(inReader);

      3)    File file = new File ("hello.txt");

      FileReader fileReader=new FileReader(file);

      BufferedReader bufReader=new BufferedReader(fileReader);

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多