青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

xiaoguozi's Blog
Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····
File,FileInputStream,FileReader,InputStreamReader,BufferedReader的使用和區別
參考資料:
? 《core java》12章
? 使用Java操作文本文件的方法詳解http://java.ccidnet.com/art/3737/20041108/523627_1.html
? FileReader 是什么類?和 FileInputStream 有什么不同???
http://book.hackbase.com/ask2/ask107572.htm

自己的整理和領會:


引言:
C語言只需要一個File*就可以了,與C不同,java有一系列流類型,其數量超過60種。類庫的設計者聲稱:“有足夠的理由為用戶提供豐富的流類型的選擇:這樣做可以減少程序的錯誤。”例如,在C語言種,許多人認為“將輸出流寫入一個只讀模式的文件”是很常見的錯誤。(事實上,這并不常見。)

我們認為在C++語言中,流接口設計者避免程序出錯的主要“工具”是小心謹慎的態度,在java語言中更是如此。流庫的高度復雜性迫使程序設計人員謹小慎微。

1. File類
1)File類介紹(《core java》638頁)
File類封裝了對用戶機器的文件系統進行操作的功能。例如,可以用File類獲得文件上次修改的時間移動,或者對文件進行刪除、重命名。換句話說,流類關注的是文件內容,而File類關注的是文件在磁盤上的存儲。
File類的主要方法有:getName(),getCanonicalFile(),lastModified(),isDerector(),isFile(),getPath()等;

2)File類與FileInputStream類的區別:
流類關注的是文件內容,而File類關注的是文件在磁盤上的存儲。

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

提示:(《core java》639頁)
如果處理文件或者目錄名,就應該使用File對象,而不是字符串。例如,File類的equals方法知道一些文件系統對大小寫是敏感的,目錄尾的“/”字符無關緊要。

自己的領會:
FileInputStream類或者FileReader類的構造函數有多個,其中典型的兩個分別為:一個使用File對象為參數;而另一個使用表示路徑的String對象作為參數;自己以前一直覺得直接用了String指定路徑就可以了,一直不明白為什么很多人都先構造一個File對象,現在終于明白了,“如果處理文件或者目錄名,就應該使用File對象,而不是字符串。”!
2. FileInputStream
1)FileInputStream類介紹:
以字節為單位(非unicode)的流處理。字節序列即:二進制數據。與編碼無關,不存在亂碼問題。
FileInputStream類的主要方法有:
Read(),read(byte[] b),read(byte[],int off,int len),available();

2)FileInputStream類與FileReader類的區別:
兩個類的構造函數的形式和參數都是相同的,參數為File對象或者表示路徑的String,它們到底有何區別呢?
? Readers and Writers work only on line based character data, so plain text files.
For anything else, you MUST use Streams.
? JDK5 API:
FileInputStream is meant for reading streams of raw bytes such as image data. For reading streams of characters, consider using FileReader.
FileReader is meant for reading streams of characters. For reading streams of raw bytes, consider using a FileInputStream.

? FileInputStream:以字節流方式讀取;FileReader:把文件轉換為字符流讀入;
? InputStream提供的是字節流的讀取,而非文本讀取,這是和Reader類的根本區別。用Reader讀取出來的是char數組或者String ,使用InputStream讀取出來的是byte數組。
? Reader類及其子類提供的字符流的讀取char(16位,unicode編碼),inputStream及其子類提供字節流的讀取byte(8位),所以FileReader類是將文件按字符流的方式讀取,FileInputStream則按字節流的方式讀取文件;InputStreamReader可以將讀如stream轉換成字符流方式,是reader和stream之間的橋梁
? 最初Java是不支持對文本文件的處理的,為了彌補這個缺憾而引入了Reader和Writer兩個類。
? FileInputStream類以二進制輸入/輸出,I/O速度快且效率搞,但是它的read()方法讀到的是一個字節(二進制數據),很不利于人們閱讀。
? 而FileReader類彌補了這個缺陷,可以以文本格式輸入/輸出,非常方便;比如可以使用while((ch = filereader.read())!=-1 )循環來讀取文件;可以使用BufferedReader的readLine()方法一行一行的讀取文本。
? 當我們讀寫文本文件的時候,采用Reader是非常方便的,比如FileReader, InputStreamReader和BufferedReader。其中最重要的類是InputStreamReader,它是字節轉換為字符的橋梁。 你可以在構造器重指定編碼的方式,如果不指定的話將采用底層操作系統的默認編碼方式,例如GBK等。
? FileReader與InputStreamReader涉及編碼轉換(指定編碼方式或者采用os默認編碼),可能在不同的平臺上出現亂碼現象!而FileInputStream以二進制方式處理,不會出現亂碼現象.
3)自己的領會:
? 如果處理純文本文件,建議使用FileReader,因為更方便,也更適合閱讀;但是要注意編碼問題!
? 其他情況(處理非純文本文件),FileInputStream是唯一的選擇;FileInputStream是進Socket通訊時會用到很多,如將文件流是Stream的方式傳向服務器!

3. FileReader類
1) FileReader類介紹:
InputStreamReader類的子類,所有方法(read()等)都從父類InputStreamReader中繼承而來;
2) 與InputStreamReader類的區別:
? 自己的領會:
該類與它的父類InputStreamReader的主要不同在于構造函數,主要區別也就在于構造函數!從InputStreamReader的構造函數中看到,參數為InputStream和編碼方式,可以看出,當要指定編碼方式時,必須使用InputStreamReader類;而FileReader構造函數的參數與FileInputStream同,為File對象或表示path的String,可以看出,當要根據File對象或者String讀取一個文件時,用FileReader;我想FileReader子類的作用也就在于這個小分工吧。
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類
? Jdk5 api:
Read text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.
? BufferedReader 由Reader類擴展而來,提供通用的緩沖方式文本讀取,而且提供了很實用的readLine,讀取分行文本很適合,BufferedReader是針對Reader的,不直接針對文件,也不是只針對文件讀取。
? 一般用法:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
  String data = null;
  while((data = br.readLine())!=null)
  {
   System.out.println(data);
  }
6. 總結以上內容,得出比較好的規范用法:
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);

java文件操作example:
 1import java.io.*;
 2import java.util.*;
 3public class Filestream {
 4    public static void main(String[] args){
 5        try{
 6            File path=new File("D:/text.txt");
 7            BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(path)));
 8            char[] cbuf=new char[10000];
 9            br.read(cbuf);
10            for(int i=0;i<cbuf.length;++i){
11                System.out.print(cbuf[i]);
12            }

13        }
catch(Exception e){
14            e.printStackTrace();
15        }

16    }

17}

18
posted on 2009-05-04 10:37 小果子 閱讀(2582) 評論(0)  編輯 收藏 引用 所屬分類: 學習筆記
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品免费区二区三区观看| 欧美日韩第一页| 国产日韩欧美中文在线播放| 亚洲欧美国产精品va在线观看| 亚洲国产欧美一区二区三区同亚洲| 久久精品天堂| 亚洲精品日韩在线观看| 亚洲区国产区| 国产精品久久久久久久7电影| 日韩亚洲精品电影| 亚洲视频二区| 在线精品国产成人综合| 91久久精品美女| 国产精品自在线| 免费在线亚洲欧美| 欧美日韩色综合| 久久成人免费电影| 久久久久久久波多野高潮日日| 136国产福利精品导航| 亚洲精品一区二区三区樱花| 欧美日韩亚洲综合一区| 久久精品综合一区| 欧美大片在线观看| 羞羞视频在线观看欧美| 欧美jjzz| 久久国产精品一区二区三区四区| 欧美一区二区福利在线| 亚洲精品看片| 久久成人一区二区| 亚洲视频一二区| 久久久久在线| 欧美一区二区| 欧美大片免费| 久久婷婷丁香| 国产精品久久国产精品99gif | 国产精品乱码一区二三区小蝌蚪| 欧美一区日本一区韩国一区| 免费亚洲电影在线观看| 久久精品av麻豆的观看方式| 欧美日韩精品一区二区天天拍小说 | 久久精品在这里| 一本到高清视频免费精品| 午夜精品国产精品大乳美女| 亚洲精选国产| 久久综合中文字幕| 久久久91精品国产一区二区三区 | 亚洲国产欧美一区| 韩国av一区二区三区| 亚洲天堂av图片| 日韩视频精品在线| 麻豆国产精品va在线观看不卡| 亚洲欧美一区二区三区在线| 欧美精品在线视频| 欧美激情久久久久久| 一区二区三区在线看| 欧美一区二区三区精品| 性做久久久久久久免费看| 欧美午夜电影网| 一本色道综合亚洲| 亚洲视屏在线播放| 欧美日韩精品一本二本三本| 亚洲国产天堂久久综合| 亚洲国产精品悠悠久久琪琪| 久久精品国产一区二区三区| 久久er精品视频| 国产精品一区二区久久久久| 亚洲自拍16p| 欧美自拍偷拍| 国模私拍视频一区| 久久久www| 欧美国产亚洲精品久久久8v| 在线播放视频一区| 美女精品一区| 亚洲国产免费| 亚洲网站在线播放| 国产精品视频自拍| 欧美一区二区福利在线| 久久亚洲影院| 亚洲人体影院| 欧美视频一区二区三区…| 亚洲午夜精品网| 久久久久成人网| 亚洲激精日韩激精欧美精品| 欧美精品色综合| 一区二区三区三区在线| 欧美一区永久视频免费观看| 国内视频精品| 欧美韩日亚洲| 亚洲一区二区在线播放| 久久蜜桃资源一区二区老牛 | 欧美激情麻豆| 一区二区91| 久久一区亚洲| 99v久久综合狠狠综合久久| 欧美视频一区二区三区…| 午夜欧美电影在线观看| 欧美高清在线视频观看不卡| 亚洲午夜未删减在线观看| 国产日韩精品视频一区二区三区| 午夜精品国产更新| 亚洲高清不卡| 欧美一级专区免费大片| 在线免费观看日本一区| 欧美日韩天堂| 久久久久综合网| 在线一区二区三区做爰视频网站| 久久99伊人| 亚洲精品综合久久中文字幕| 国产欧美日韩综合一区在线观看| 久久久久久网址| 一区二区三区精品视频| 老司机67194精品线观看| 亚洲视频狠狠| 在线观看av一区| 国产精品日韩欧美一区| 欧美成人精精品一区二区频| 新狼窝色av性久久久久久| 亚洲精品欧美专区| 免费在线成人av| 性色一区二区三区| 亚洲视频在线看| 91久久极品少妇xxxxⅹ软件| 国产一区视频在线看| 国产精品第13页| 欧美日本一区二区视频在线观看| 欧美综合第一页| 亚洲欧美日产图| 亚洲视频在线视频| 亚洲国产中文字幕在线观看| 欧美/亚洲一区| 久久免费黄色| 久久免费高清视频| 久久久精品一区| 欧美一级免费视频| 午夜精品视频网站| 亚洲伊人一本大道中文字幕| 在线视频日韩精品| 99精品视频一区| 日韩视频精品在线观看| 亚洲欧洲日产国产网站| 亚洲国产毛片完整版| 亚洲高清一区二| 曰本成人黄色| 亚洲国产精品久久久久| 亚洲国产婷婷香蕉久久久久久99 | 六月婷婷一区| 另类av导航| 欧美激情一区二区三区不卡| 欧美成在线观看| 欧美日韩成人综合| 欧美三区美女| 国产欧美日韩精品丝袜高跟鞋| 欧美精品一区二区视频| 欧美日韩精品在线视频| 欧美日韩久久不卡| 欧美视频一区| 国产欧美精品久久| 激情久久五月| 亚洲精品欧洲精品| 亚洲网站视频福利| 久久精品av麻豆的观看方式| 久热成人在线视频| 亚洲国产精品视频| 亚洲视频在线免费观看| 香港成人在线视频| 免费成人性网站| 国产精品国产三级国产普通话蜜臀| 欧美日韩国产一区二区三区地区| 欧美日韩国产专区| 国产日韩欧美在线看| 在线观看一区| 亚洲午夜久久久| 久久久久高清| 亚洲精品视频在线| 羞羞色国产精品| 欧美激情精品| 国产欧美在线观看一区| 亚洲电影观看| 校园春色综合网| 欧美激情中文不卡| 亚洲免费网站| 欧美激情日韩| 国产一级久久| 亚洲一区二区久久| 欧美福利一区二区| 亚洲欧美日韩在线| 欧美夫妇交换俱乐部在线观看| 国产精品二区三区四区| 亚洲高清在线播放| 欧美一区二区三区四区在线观看| 欧美xxxx在线观看| 亚洲综合欧美日韩| 欧美精品日韩一区| 国产一区在线观看视频| 日韩午夜激情电影| 你懂的一区二区| 欧美一区永久视频免费观看| 欧美吻胸吃奶大尺度电影| 亚洲精品日产精品乱码不卡| 久久综合九色欧美综合狠狠|