需求:使用IO流將一個文件的內容復制到另外一個文件中去
文件"good boy.txt"位於D盤根目錄下,要求將此文件的內容復制到c:\\myFile.txt中
代碼:
import java.io.*;
public classInputAndOutputFile{
public static void main(String[]args){
FileInputStream fis=null;
FileOutPutStream fos=null;
try{ //1.創建輸入流對象,負責讀取D:/good boy.txt文件
fis=new FileInputStream("D:/good boy.txt");
//2.創建輸出流對象
fos=new FileOutputStream("C:/myFile.txt",true);
//3.創建中轉站數組,存放每次讀取的內容
byte[] words=new byte[1024];
//4.通過循環實現文件讀寫
inte len=-1;
while((len=fis.read(words))!=-1){
fos.write(words,0,len);
}
//5強制清理緩沖區
fos.flush();
System.out.println("復制完成,請查看文件!");
}catch(FileNotFoundExcepton e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
//6.關閉流
try{
fis.close();
fos.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
常犯錯誤出現在while循環寫入的地方:
錯誤代碼:
while((fis.read())!=-1){ //錯誤之處在這裡:此時fis.read();已實現第一次讀寫,所以words中緩存的字符就少了第一位,導致結果錯誤。
fis.read(words);//讀取文件
fos.write(words,0,words.length);//寫入文件
}