/************************************************************************************
* 需求:以文件流的形式讀取指定桌面的test_iosstream.txt文件並輸出到控制台顯示出內容
* 實現思路:將指定字符串路徑filename轉化為文件對象;方式一以字節流對象操作文件,每次讀取一個字節並輸出到控制台直至讀取完;方式二以字符流對象操作文件,每次讀取一個字符並輸出到控制台,直至讀取完;方式三以默認緩沖流的方式讀取文件內容,每次讀取一行數據,直至讀取完;最后三種方式都得關流操作!
* 知識要點:方式一和二讀取到文件的末尾再讀取無內容時讀取的流長度為-1,方式三讀取到文件結尾再讀取無內容則返回為null;不論那種方式讀取流操作都可能出現IO流異常故必須try and catch並finally最終關閉流操作;
***********************************************************************************/
import java.io.*;
import java.nio.charset.Charset;
public class Test_IOStream{
public static void main(String[] args){
String filename = "C:\\Users\\Administrator\\Desktop\\test_iostream.txt";
// readFileByByte(filename);
// readFileByChar(filename);
readFileByBuffer(filename);
}
/*
* 方式一:讀取文件系統字節流方式讀取文件
*/
public static void readFileByByte(String filename){
File readFile = new File(filename); //根據路徑名構造文件對象
InputStream in = null; //定義字節流
try{
in = new FileInputStream(readFile); //實例化字節流對象
int readbyte;
while((readbyte=in.read())!=-1){ //每次讀取一個字節(0-255)
System.out.write(readbyte); //輸出出去
}
in.close();
}catch(Exception e){
e.printStackTrace();
}finally{
if(in!=null){
try{
in.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
/*
* 方式二: 讀取文件系統字符流方式讀取文件
*/
public static void readFileByChar(String filename){
File readFile = new File(filename);
Reader rd = null;
try{
rd = new InputStreamReader(new FileInputStream(readFile),Charset.forName("UTF-8"));
int tempchar;
while((tempchar=rd.read())!=-1){
if((char)tempchar!='\r'){
System.out.write(tempchar);
}
}
rd.close();
}catch(IOException e){
e.printStackTrace();
}finally{
if(rd!=null){
try{
rd.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
/*
* 方式三: 讀取文件系統緩沖字符流方式讀取文件
*/
public static void readFileByBuffer(String filename){
// File readFile = new File(filename);
BufferedReader br = null;
try{
// br = new BufferedReader(new FileReader(readFile));
br = new BufferedReader(new FileReader(filename));
String rline = null;
while((rline=br.readLine())!=null){
System.out.println(rline);
}
br.close();
}catch(IOException e){
e.printStackTrace();
}finally{
if(br!=null){
try{
br.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}