標籤:
java的檔案讀寫有多種方式,在此通過代碼做以下比較。
比較一:FileWriter和FileReader
public class MyCode1 { public static void main(String[] args) throws IOException { File f = new File("my.txt"); FileWriter fw = new FileWriter(f); fw.write("HELLO"); fw.close(); FileReader fr = new FileReader(f); System.out.println((char)fr.read()); fr.close(); }}
輸出: H
可見,FileWriter可以批量寫入,但是FileReader每次只能讀取一個字元。
比較二:OutputStream和InputStream
public class MyCode1 { public static void main(String[] args) throws IOException { File f = new File("my.txt"); char[] data = new char[]{‘H‘, ‘E‘, ‘L‘, ‘L‘, ‘O‘}; OutputStream os = new FileOutputStream(f); os.write(data[0]); os.close(); InputStream is = new FileInputStream(f); System.out.println((char)is.read()); is.close(); }}
輸出: H
可見,OutputStream和InputStream每次只可以讀寫一個字元。
比較三:OutputStreamWriter和InputStreamReader
public class MyCode1 { public static void main(String[] args) throws IOException { File f = new File("my.txt"); OutputStream os = new FileOutputStream(f); OutputStreamWriter osw = new OutputStreamWriter(os); osw.write("HELLO"); osw.close(); os.close(); InputStream is = new FileInputStream(f); InputStreamReader isr = new InputStreamReader(is); System.out.println((char)isr.read()); isr.close(); is.close(); }}
輸出: H
可見,OutputStreamWriter可以批量寫入,但是InputStreamReader每次只能讀取一個字元。效果同FileWriter和FileReader。
比較四:BufferedWriter和BufferedReader
public class MyCode1 { public static void main(String[] args) throws IOException { File f = new File("my.txt"); OutputStream os = new FileOutputStream(f); OutputStreamWriter osw = new OutputStreamWriter(os); BufferedWriter bw = new BufferedWriter(osw); bw.write("HELLO"); bw.close(); osw.close(); os.close(); InputStream is = new FileInputStream(f); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); System.out.println(br.readLine()); isr.close(); is.close(); }}
輸出: HELLO
可見,BufferedWriter和BufferedReader可以批量讀寫。
java的inputstream, outputstream, reader和writer的比較