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

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 小果子 閱讀(2580) 評論(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>
            美女在线一区二区| 国产一区二区| 亚洲免费精彩视频| 亚洲一区二区三区国产| 亚洲激情国产| 国产毛片久久| 欧美成人一区二区三区| 午夜欧美不卡精品aaaaa| 欧美一区2区三区4区公司二百| 欧美日本一道本| 亚洲精品视频免费观看| 亚洲美女免费精品视频在线观看| 午夜精彩视频在线观看不卡| 久久久久久久999| 亚洲欧洲日韩女同| 欧美日韩在线观看视频| 亚洲欧美日韩国产中文在线| 欧美国产先锋| 欧美在线91| 亚洲私人影院在线观看| 国产亚洲精品bt天堂精选| 欧美精品在线极品| 欧美高清视频免费观看| 亚洲综合日本| 午夜视频久久久久久| 国产美女精品免费电影| 老司机67194精品线观看| 亚洲字幕在线观看| 亚洲国产三级| 久久国产一区二区三区| 亚洲美女视频在线观看| 精品动漫3d一区二区三区免费 | 激情文学一区| 国产欧亚日韩视频| 欧美另类极品videosbest最新版本| 欧美在线观看视频| 久久久久这里只有精品| 午夜国产欧美理论在线播放| 日韩一二在线观看| 亚洲一区中文| 蜜乳av另类精品一区二区| 亚洲精品中文在线| 亚洲视频成人| 午夜精品av| 欧美成年人网站| 欧美日韩亚洲免费| 国产精品一区免费视频| 国产欧美一区二区精品秋霞影院| 欧美日韩在线观看视频| 国产欧美日韩三级| 国产一区二区久久久| 亚洲国产老妈| 99视频在线观看一区三区| 亚洲欧美日韩精品久久久久| 亚洲电影免费观看高清完整版在线观看 | 亚洲免费观看高清完整版在线观看熊 | 亚洲大胆人体视频| 亚洲女优在线| 国产精品久久久久天堂| 激情久久一区| 在线观看91精品国产入口| 亚洲中午字幕| 亚洲午夜未删减在线观看| 在线视频日本亚洲性| 久久精品中文| 91久久精品日日躁夜夜躁国产| 亚洲综合三区| 亚洲淫性视频| 国产精品综合久久久| 亚洲综合欧美日韩| 亚洲综合欧美| 有码中文亚洲精品| 欧美激情影音先锋| 欧美日韩一区二区欧美激情| 日韩一级不卡| 亚洲男女自偷自拍图片另类| 国产精品电影网站| 新67194成人永久网站| 欧美专区第一页| 亚洲一区bb| 亚洲高清视频在线观看| 亚洲激情中文1区| 欧美日韩国产一区| 国产伦精品一区二区| 老司机精品导航| 亚洲国产欧美在线人成| 欧美视频中文一区二区三区在线观看| 亚洲图片在区色| 久久久久久久久久久一区 | 国产午夜精品理论片a级大结局| 亚洲精品久久久久久久久久久| 国产欧美日韩91| 久久精品国产欧美激情| 欧美肥婆在线| 欧美精品自拍| 久久亚洲不卡| 国产酒店精品激情| 久久久久久久久久久一区 | 免费观看亚洲视频大全| 美国成人直播| 亚洲国产清纯| 欧美激情国产日韩精品一区18| 国产精品99久久久久久久vr| 国产精品多人| 亚洲欧美成人一区二区在线电影| 香蕉久久久久久久av网站| 亚洲电影在线免费观看| 欧美日韩一级大片网址| 亚洲欧美日韩精品| 亚洲精品乱码久久久久| 亚洲欧洲99久久| 亚洲国产va精品久久久不卡综合| 国产精品亚洲аv天堂网| 久久精品一本| 亚洲国产日韩欧美在线图片 | 老鸭窝毛片一区二区三区 | 中文av一区特黄| 国产主播一区| 国产精品久久久久久久久久免费 | 欧美在线在线| 一区二区三区精品在线| 国产在线拍揄自揄视频不卡99| 欧美性猛交xxxx乱大交蜜桃| 欧美日韩性视频在线| 日韩一级在线观看| 亚洲二区在线视频| 久久精品欧美日韩| 在线一区观看| 亚洲另类自拍| 91久久久久久久久久久久久| 激情一区二区三区| 国产真实久久| 狠狠综合久久av一区二区老牛| 欧美三级在线| 欧美午夜精品久久久久久久| 欧美电影美腿模特1979在线看 | 夜久久久久久| 99视频精品全部免费在线| 亚洲成色777777在线观看影院| 国产欧美婷婷中文| 国产手机视频精品| 国产农村妇女精品一区二区 | 亚洲欧洲综合另类在线| 欧美成人精品| 欧美jizz19hd性欧美| 久久亚洲不卡| 久久久无码精品亚洲日韩按摩| 久久精品天堂| 久久激情视频| 久久久精品国产免大香伊| 久久国产精品电影| 久久最新视频| 欧美国产精品| 亚洲精品国产精品国自产在线| 亚洲级视频在线观看免费1级| 亚洲精品国久久99热| 夜夜夜久久久| 激情综合久久| 久久久99爱| 欧美一区观看| 欧美日韩精品欧美日韩精品| 欧美资源在线| 红桃视频国产精品| 亚洲卡通欧美制服中文| 裸体女人亚洲精品一区| 免费毛片一区二区三区久久久| 亚洲国产精品成人| 久久综合九色综合欧美就去吻| 久久夜色精品国产欧美乱极品| 久久嫩草精品久久久精品一| 亚洲第一区色| 亚洲精品黄色| 亚洲午夜av电影| 亚洲一区二区三区激情| 一区二区欧美国产| 亚洲一区二区视频| 久久精品夜色噜噜亚洲a∨| 另类尿喷潮videofree| 亚洲成色www久久网站| 亚洲精品免费在线播放| 9久草视频在线视频精品| 亚洲欧美久久| 久久夜色精品国产欧美乱极品| 欧美区视频在线观看| 国产欧美日韩一区二区三区在线观看 | 久久在线免费观看视频| 亚洲激情成人| 亚洲国产一区二区三区高清| 亚洲伊人伊色伊影伊综合网| 久久se精品一区精品二区| 免费一级欧美片在线播放| 欧美三日本三级三级在线播放| 国产一区视频在线观看免费| 亚洲伦理中文字幕| 香港久久久电影| 欧美成年人视频| 午夜精品福利电影| 米奇777超碰欧美日韩亚洲| 国产精品日产欧美久久久久| 亚洲麻豆视频|