Java 中對文件的讀寫操作之比較
作者:Jeru Liu 日期:November 29,2000 版本:1.0
紀念在chinaasp積分過一百嘔心原創一篇(Java 中對文件的讀寫操作之比較)拿分好難呀,555~~~,不知道那些幾千分的老妖們是怎么灌水的。
Java 對文件進行讀寫操作的例子很多,讓初學者感到十分困惑,我覺得有必要將各種方法進行 一次分析,歸類,理清不同方法之間的異同點。
一.在 JDK 1.0 中,通常是用 InputStream & OutputStream 這兩個基類來進行讀寫操作的。 InputStream 中的 FileInputStream 類似一個文件句柄,通過它來對文件進行操作,類似的,在 OutputStream 中我們有 FileOutputStream 這個對象。
用FileInputStream 來讀取數據的常用方法是: FileInputStream fstream = new FileInputStream(args[0]); DataInputStream in = new DataInputStream(fstream); 用 in.readLine() 來得到數據,然后用 in.close() 關閉輸入流。 完整代碼見 Example 1。
用FileOutputStream 來寫入數據的常用方法是: FileOutputStream out out = new FileOutputStream("myfile.txt"); PrintStream p = new PrintStream( out ); 用 p.println() 來寫入數據,然后用 p.close() 關閉輸入。 完整代碼見 Example 2。
二.在 JDK 1.1中,支持兩個新的對象 Reader & Writer, 它們只能用來對文本文件進行操作,而 JDK1.1中的 InputStream & OutputStream 可以對文本文件或二進制文件進行操作。
用FileReader 來讀取文件的常用方法是: FileReader fr = new FileReader("mydata.txt"); BufferedReader br = new BufferedReader(fr); 用 br.readLing() 來讀出數據,然后用br.close() 關閉緩存,用fr.close() 關閉文件。 完整代碼見 Example 3。
用 FileWriter 來寫入文件的常用方法是: FileWriter fw = new FileWriter("mydata.txt"); PrintWriter out = new PrintWriter(fw); 在用out.print 或 out.println 來往文件中寫入數據,out.print 和 out.println的唯一區別是后者寫 入數據或會自動開一新行。寫完后要記得 用out.close() 關閉輸出,用fw.close() 關閉文件。 完整代碼見 Example 4。
-------------------------------------------------------------- following is the source code of examples------------------------------------------------------
Example 1: // FileInputDemo // Demonstrates FileInputStream and DataInputStream import java.io.*;
class FileInputDemo { public static void main(String args[]) { // args.length is equivalent to argc in C if (args.length == 1) { try { // Open the file that is the first command line parameter FileInputStream fstream = new FileInputStream(args[0]); // Convert our input stream to a DataInputStream DataInputStream in = new DataInputStream(fstream); // Continue to read lines while there are still some left to read while (in.available() !=0) { // Print file line to screen System.out.println (in.readLine()); } in.close(); } catch (Exception e) { System.err.println("File input error"); } } else System.out.println("Invalid parameters"); } }
Example 2: // FileOutputDemo // Demonstration of FileOutputStream and PrintStream classes import java.io.*;
class FileOutputDemo { public static void main(String args[]) { FileOutputStream out; // declare a file output object PrintStream p; // declare a print stream object
try { // connected to "myfile.txt" out = new FileOutputStream("myfile.txt"); // Connect print stream to the output stream p = new PrintStream( out ); p.println ("This is written to a file"); p.close(); } catch (Exception e) { System.err.println ("Error writing to file"); } } }
Example 3: // FileReadTest.java // User FileReader in JDK1.1 to read a file import java.io.*;
class FileReadTest { public static void main (String[] args) { FileReadTest t = new FileReadTest(); t.readMyFile(); } void readMyFile() { String record = null; int recCount = 0; try { FileReader fr = new FileReader("mydata.txt"); BufferedReader br = new BufferedReader(fr); record = new String(); while ((record = br.readLine()) != null) { recCount++; System.out.println(recCount + ": " + record); } br.close(); fr.close(); } catch (IOException e) { System.out.println("Uh oh, got an IOException error!"); e.printStackTrace(); } } }
Example 4: // FileWriteTest.java // User FileWriter in JDK1.1 to writer a file import java.io.*;
class FileWriteTest { public static void main (String[] args) { FileWriteTest t = new FileWriteTest(); t.WriteMyFile(); } void WriteMyFile() { try { FileWriter fw = new FileWriter("mydata.txt"); PrintWriter out = new PrintWriter(fw); out.print(“hi,this will be wirte into the file!”); out.close(); fw.close(); } catch (IOException e) { System.out.println("Uh oh, got an IOException error!"); e.printStackTrace(); } } }
|