java中文件的讀寫操作
(一)
(1)java中文件的字節轉成字符讀操作
FileInputStream fStream = new FileInputStream("test.txt");//此時為字節流
byte[] b = new byte[31];//定義字節數組存儲從文件夾中讀取的數據,大小最多31字節
fStream.read(b);//將test.txt的數據讀到b中
String line = new String(b,"UTF-8");//將字節轉換成字符
System.out.println(line);//打印輸出
以上是簡單的字節轉字符輸出的例子,當數據量較大時,應該重復讀取
while(fStream.read(b)!=-1)
{
String line=new String(b,"UTF-8");
System.out.println(line);
}
(2
)java中文件的字符轉為字節寫操作
FileOutputStream fos = new FileOutputStream("test.txt");
String line="hello world";
byte b[]=line.getBytes();//將字符轉換成字節
fos.write(b);通過字節流寫入文件
fos.close();//關閉
(二)
利用緩沖區來進行文件的寫入和寫出,都是以緩沖區為中介,java.io.BufferedReader和java.io.BufferedWriter類各擁有8192字符的緩沖區。當BufferedReader在讀取文本文件時,會先盡量從文件中讀入字符數據並置入緩沖區,而之后若使用read()方法,會先從緩沖區中進行讀取。如果緩沖區數據不足,才會再從文件中讀取,使用BufferedWriter時,寫入的數據並不會先輸出到目的地,而是先存儲至緩沖區中。如果緩沖區中的數據滿了,才會一次對目的地進行寫出。
(1)利用緩沖區向文件寫入數據
String line="hello";
FileOutputStream fos = new FileOutputStream("test.txt");
BufferedWriter bfr = new BufferedWriter(new OutputStreamWriter(fos));//
bfr.write(line);//向緩沖區寫入數據
bfr.flush();//清理緩沖區,將數據全部傳入文件
bfr.close();//關閉緩沖區
fos.close();//關閉文件輸出流
為什么用到flush(),因為緩沖區對於小數據,可能要等到存滿一定量的數據才會向文件寫入,造成一定的數據滯留,利用flush可以將滯留的數據一起輸送給文件,防止文件數據的丟失。
(2)利用緩沖區從文件中讀取數據
FileInputStream fis = new FileInputStream("test.txt"); BufferedReader bfr = new BufferedReader(new InputStreamReader(fis)); String line=null; while((line=bfr.readLine())!=null)//從讀緩沖區一行一行的讀取數據 { System.out.println(line); } bfr.flush();//清空緩沖區
bfr.close();//關閉緩沖區 fis.close();//關閉文件輸入流
bfr.readline()是通過從緩沖區以行為單位讀取數據,BufferReader是通過將字節轉換成字符類。
另外關於文件的寫入不覆蓋新的數據,方法
FileOutputStream os = new FileOutputStream("test.txt", true);//true表示每次添加到文件末尾,從而不刪除原有數據
(三)關於FileReader和FileWriter
(1)FileReader
FileReader類創建了一個可以讀取文件內容的Reader類。比較適用於純文本文件
例如,從一個文件逐行讀取並把它輸出到標准輸入流。
import java.io.*; class FileReaderDemo { public static void main (String args[ ] ) throws Exception { FileReader fr = new FileReader ("c://in.txt"); BufferedReader br = new BufferedReader (fr); String s; while ((s = br.readLine() )!=null) { System.out.prinln (s); } fr.close(); } }
(2)FileWriter
FileWriter 創建一個可以寫文件的Writer類。構造函數:
FileWriter (String filePath) filePath 是一個文件的完整路徑
FileWriter(String filePath, boolean append) 如果append為true ,輸出是附加到文件尾的,即不覆蓋原數據
FileWriter(File fileObj) 是描述該文件的File對象
FileWriter fr = new FileWriter("test.txt"); BufferedWriter bfw = new BufferedWriter(fr); String linString="hello World"; bfw.write(linString); bfw.flush(); bfw.close(); fr.close();
綜上只是簡單敘述了常見讀寫文件的方法,歡迎指正