Java基礎學習之IO流模擬輸入複製貼上功能
阿新 • • 發佈:2018-11-01
學習了IO流後,瞭解其IO體系:
字元流:
Reader:輸入流 讀取 進入記憶體
Writer:輸出流 寫入 進硬碟
位元組流:
InputStream:輸入流 讀取 進記憶體
OutputStream:輸出流 寫入 進硬碟
下面通過字元流的輸入流(FileReader)以及輸出流(FileWriter)模擬系統中的複製貼上功能:如將D盤下的1.txt複製貼上到C盤中。
思路:
- 確定原始檔 d:/1.txt
- 確定目的檔案 c:/1.txt
- 邊讀邊寫
- 釋放資源
注意:
輸入流中的read(陣列)函式的返回值為int型別,返回的是覆蓋陣列中的元素長度,讀取結束標誌是返回值為-1;
每次寫入結束後要使用flush()函式進行重新整理快取。
程式碼:
首先用基本的輸入輸出流實現:
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Test1 { public static void main(String[] args){ //1.確定原始檔 d:/1.txt FileReader fr=null; FileWriter fw=null; try { fr=new FileReader("d:/1.txt"); //2.確定目標檔案 c:/1.txt fw=new FileWriter("c:/1.txt"); //3.邊讀邊寫 char[] cbuf=new char[3]; int len=0; //覆蓋的長度 while((len=fr.read(cbuf))!=-1){ fw.write(cbuf,0,len); //將cbuf陣列中從下標0的位置開始寫入c:/1.txt,寫入陣列中的len個元素。 fw.flush(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { //4.釋放資源 try { fr.close(); fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
使用緩衝區(提高效率)實現:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; public class Test2 { public static void main(String[] args) throws Exception { //1.確定原始檔 //FileReader fr=new FileReader("d:/1.txt"); //提高效率 //BufferedReader br=new BufferedReader(fr); BufferedReader br=new BufferedReader(new FileReader("d:/1.txt")); //2.確定目的檔案 BufferedWriter bw=new BufferedWriter(new FileWriter("d:/poet.txt")); //3.邊讀邊寫 String str=null; while((str=br.readLine())!=null){ bw.write(str); bw.newLine(); bw.flush(); } //4.釋放資源 br.close(); bw.close(); } }