java文件中file文件讀取的區別和用法

 

一、File 類關注的是文件在磁盤上的存儲,而FileInputStream流類關注的是文件的內容。

二、關於InputStream和Reader;

InputStream提供的是字節流的讀取,使用InputStream讀取出來的是byte數組,而非文本讀取,用Reader讀取出來的是char數組或者String,這是InputStream和Reader類的根本區別。

InputStreamReader可以將讀如stream轉換成字符流方式,是reader和stream之間的橋樑.


Reader類及其子類提供的字符流的讀取char(16位,unicode編碼),inputStream及其子類提供字節流的讀取byte(8位),所以FileReader類是將文件按字符流的方式讀取,FileInputStream則按字節流的方式讀取文件;


FileInputStream以字節爲單位(非 unicode )的流處理。字節序列即:二進制數據。與編碼無關,不存在亂碼問題。

FileInputStream :以字節流方式讀取;

FileReader :把文件轉換爲字符流讀入;


三、常用的Reader

 FileReader ,InputStreamReader ,BufferedReader

 FileReader 與 InputStreamReader 涉及編碼轉換,可能在不同的平臺上出現亂碼現象。

 (FileInputStream 以二進制方式處理,不會出現亂碼現象。)

FileReader是InputStreamReader 類的子類。

InputStreamReader 的構造函數參數爲InputStream 和編碼方式,當要指定編碼方式時,必須使用 InputStreamReader 類。

FileReader 構造函數的參數與 FileInputStream 同,爲 File 對象或表示 path 的 String。

1FileReader的用法

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

2InputStreamReader的用法

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

3、BufferedReader的用法。

BufferedReader 由Reader類擴展而來,提供通用的緩衝方式文本讀取,而且提供了很實用的readLine,讀取分行文本很適合,BufferedReader是針對Reader的,不直接針對文件,也不是隻針對文件讀取。

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("file.txt")));
String data = null;
while((data = br.readLine())!=null)
{
 System.out.println(data);
}

四、用法總結

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

FileInputStream in=new FileInputStream(file);

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

FileInputStream in=new FileInputStream(file);

InputStreamReader inReader=new InputStreamReader(in);

BufferedReader bufReader=new BufferedReader(inReader);

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

FileReader fileReader=new FileReader(file);

BufferedReader bufReader=new BufferedReader(fileReader);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章