原文:http://blog.csdn.net/haluoluo211/article/details/52183219
一、通過BufferedReader和BufferedWriter來讀寫文件
使用緩沖流的好處是,能夠更高效的讀寫信息,原理是將數據先緩沖起來,然后一起寫入或者讀取出來。經常使用的是readLine()方法,表示一次讀取一行數據。
package org.example.io; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class TestBufferedWriter { public static void main(String[] args) throws Exception { write(); read(); } /** * DOC 讀取信息. * * @throws FileNotFoundException * @throws IOException */ private static void read() throws FileNotFoundException, IOException { File file = new File("E:\\a.txt");// 指定要讀取的文件 // 獲得該文件的緩沖輸入流 BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); String line = "";// 用來保存每次讀取一行的內容 while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } bufferedReader.close();// 關閉輸入流 } /** * DOC 寫入信息. * * @throws IOException */ private static void write() throws IOException { File file = new File("E:\\a.txt");// 指定要寫入的文件 if (!file.exists()) {// 如果文件不存在則創建 file.createNewFile(); } // 獲取該文件的緩沖輸出流 BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file)); // 寫入信息 bufferedWriter.write("你好世界"); bufferedWriter.newLine();// 表示換行 bufferedWriter.write("hello world"); bufferedWriter.flush();// 清空緩沖區 bufferedWriter.close();// 關閉輸出流 } }
二、使用BufferedInputStream和BufferedOuputStream讀寫圖片
使用方式和FileInputStrem和FileOutputStream基本一致:
package org.example.io; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class TestBufferedString { public static void main(String[] args) throws Exception { // 指定要讀取文件的緩沖輸入字節流 BufferedInputStream in = new BufferedInputStream(new FileInputStream("F:\\test.jpg")); File file = new File("E:\\test.jpg"); if (file != null) { file.createNewFile(); } // 指定要寫入文件的緩沖輸出字節流 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); byte[] bb = new byte[1024];// 用來存儲每次讀取到的字節數組 int n;// 每次讀取到的字節數組的長度 while ((n = in.read(bb)) != -1) { out.write(bb, 0, n);// 寫入到輸出流 } out.close();// 關閉流 in.close(); } }