因爲最後的fin.read()
不會讀取任何內容。根據JavaDoc它將返回-1
,因爲你的fout.write(i)
會寫出-1
。你會做這樣的事情,爲了解決這一問題:
do {
i = fin.read();
if (i>-1) //note the extra line
fout.write(i);
} while (i != -1);
或改變do .. while
成while .. do
電話。
我建議你也應該看看新的NIO
API,這種API在一次傳輸一個字符時性能會更好。
File sourceFile = new File("C:/Users/NetBeansProjects/QuestionOne/input.txt");
File destFile = new File("C:/Users/NetBeansProjects/QuestionOne/output.txt");
FileChannel source = null;
FileChannel destination = null;
try {
if (!destFile.exists()) {
destFile.createNewFile();
}
source = new FileInputStream(sourceFile).getChannel();
destination = new FileOutputStream(destFile).getChannel();
destination.transferFrom(source, 0, source.size());
} catch (IOException e) {
System.err.println("Error while trying to transfer content");
//e.printStackTrace();
} finally {
try{
if (source != null)
source.close();
if (destination != null)
destination.close();
}catch(IOException e){
System.err.println("Not able to close the channels");
//e.printStackTrace();
}
}
來源
2012-11-03 07:58:00
dan
爲什麼重新發明輪子? Apache Commons IO有一個功能。 –