使用Java IO 流進行檔案的複製,複製成功,卻打不開復制的檔案
阿新 • • 發佈:2019-01-04
在剛開始學習Java IO操作的時候,用的並不是很熟,看的書本上的內容也講的不可能很全面,很多小的方面都必須從實踐中慢慢積累、學習。
在這裡遇到的一個問題是,複製成功的檔案,卻打不開。比如PDF檔案,顯示檔案損壞,打不開檔案。後來才發現是因為原因在位元組流操作和字元流操作的區別:
字元流主要針對一些文字文件(比位元組流操作的效率要高),比如.txt、.doc,而pdf就不行。
位元組流幾乎可以對任何檔案型別進行操作,主要是對非檔案型別的,如媒體檔案(音訊,視訊,圖片…)。
/**
*使用緩衝位元組流進行PDF文件的複製
*/
public static void copyPDF(File src, File des) throws IOException {
FileOutputStream writer = null;
FileInputStream reader = null;
BufferedInputStream bufR = null;
BufferedOutputStream bufW = null;
try {
reader = new FileInputStream(src);
writer = new FileOutputStream(des);
bufR = new BufferedInputStream(reader);
bufW = new BufferedOutputStream(writer);
int temp = 0;
while ((temp = bufR.read()) != -1) {
bufW.write(temp);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (bufR != null) {
reader.close();
bufR.close();
}
if (bufW != null) {
writer.close();
bufW.close();
}
}
}
檔案操作完成,一定要記得關閉流。