Java的幾種讀文件方式,一種爲按單字節讀取,即每次僅讀取一個字節,此方式適合圖像文件,聲音文件,視頻文件等二進制文件操作;第二種方式爲按多字節讀取,自定義一次讀的字節數量;第三種方式爲按字符讀操作,即每次讀一個字符,此方式適合文本文件,數據文件的讀操作;第四種方式爲按行讀操作,即一次讀取一行數據
package com.anson.java;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.net.Socket;
public class FileOpr{
//按字節形式讀取文件數據,用於二進制文件讀寫,圖片,聲音,視頻等文件形式
//每次讀入一個字節
public void readFileByByte(String fileName)
{
File file=new File(fileName);//實例化一個文件對象
InputStream is=null;
try
{
is=new FileInputStream(file);//實例化一個文件輸入流
int dataByte;//定義一個暫時存儲數據的int類型的對象
while((dataByte=is.read())!=-1)//讀取,判斷是否到文件結尾
{
System.out.println(dataByte);//輸出
}
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
is.close();//關閉流
} catch (IOException e)
{
e.printStackTrace();
}
}
}
//每次讀取多個字節,每次讀取4個字節
public void multiReadByBytes(String fileName)
{
File file=new File(fileName);//實例化一個文件對象
InputStream is=null;
try
{
is=new FileInputStream(file);//實例化一個文件輸入流
byte[] bytes=new byte[4];//定義一個字節數組,暫時存放讀取的數據
int len;//數據長度判斷標誌
while((len=is.read(bytes))!=-1)
{
System.out.write(bytes, 0, len);//輸出控制檯
}
}catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
is.close();//關閉文件輸入流
} catch (IOException e)
{
e.printStackTrace();
}
}
}
//按字符類型讀取完文件信息,每次讀取一個字符,適合文本,數字類文件
public void readFileByChar(String fileName)
{
File file=new File(fileName);//實例化一個文件對象
Reader reader=null;
try
{
InputStream inputStream=new FileInputStream(file);//實例化一個文件輸入流,
reader=new InputStreamReader(inputStream);//實例化一個數據讀入流
int tmpData;
while((tmpData=reader.read())!=-1)
{
if((char)tmpData!='\r')//判斷換行
{
System.out.print((char)tmpData);//輸出
}
}
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
reader.close();//關閉流
} catch (IOException e)
{
e.printStackTrace();
}
}
}
//按行讀取文件
public void readFileByLine(String fileName)
{
File file=new File(fileName);//實例化一個文件對象
BufferedReader bf=null;
try
{
bf=new BufferedReader(new FileReader(file));//實例化對象
String str=null;
while((str=bf.readLine())!=null)
{
System.out.println(str);//輸出
}
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
bf.close();//關閉流
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}