本人在學習java過程中,看到java io流,又重新看了一遍自己的複製方法,有所啓發,以前都是複製拿過來先用,現在慢慢啃代碼的意思了。特意寫了很多註釋,分享出來,供大家參考。
//複製文件
public static void copyFile(String oldPath, String newPath) throws Exception {
try {
int bytesum = 0;//這個用來統計需要寫入byte數組的長度
int byteread = 0;//這個用來接收read()方法的返回值,表示讀取內容的長度
File oldfile = new File(oldPath);//獲取源文件的file對象
if (oldfile.exists()) {//文件存在時
InputStream inputStream = new FileInputStream(oldPath);//讀入原文件,實例化輸入流
FileOutputStream fileOutputStream = new FileOutputStream(newPath);//實例化輸出流
byte[] buffer = new byte[1024];//新建讀取文件所用的數組
//此處用while循環每次按buffer讀取文件直到讀取完成
while ((byteread = inputStream.read(buffer)) != -1) {//如何讀取到文件末尾
bytesum += byteread;//此處計算讀取長度,byteread表示每次讀取的長度
System.out.println(bytesum);//輸出讀取的總長度
fileOutputStream.write(buffer, 0, byteread);//此方法第一個參數是byte數組,第二次參數是開始位置,第三個參數是長度
}
fileOutputStream.flush();//強制緩存輸出,防止數據丟失
fileOutputStream.close();//關閉輸出流
inputStream.close();//關閉輸入流
} else {
output("文件不存在!");
}
} catch (Exception e) {
output("複製文件出錯!");
throw new Exception("copy file error !" + "\r\n" + e);
}