我已經做了一個方法來在Android的外部存儲器中寫入日誌。BufferedWriter關閉拋出異常
public int writeLog(String clase, String metodo, Object object){
try{
File folder = new File(Environment.getExternalStorageDirectory(), Constants.ROUTE_FILES_TEXT);
if (!folder.exists()) {
folder.mkdir();
}
FileWriter fw = new FileWriter(folder.toString() + "/log.txt", true);
BufferedWriter out = new BufferedWriter(fw);
out.write("Hora: " + TimeService.getCurrentTimeStamp(Constants.TIMESTAMP_PATTERN) + "\n");
out.write("Clase: " + clase + "\n");
out.write("Método: " + metodo + "\n");
out.write("Mensaje: " + object + "\n\n\n");
out.flush();
out.close();
fw.flush();
fw.close();
}catch (Exception ex){
Log.d(TAG, ex.toString());
return 3;
}
return 0;
}
一切工作正常,但該方法始終引發異常。唯一的例外是:
06-13 01:00:02.043: D/FileService(14439): java.io.IOException: OutputStreamWriter is closed
但是,如果我發表意見的BufferedWriter的收盤價,那麼該方法效果很好,我沒有得到我的代碼的任何異常。
public int writeLog(String clase, String metodo, Object object){
try{
File folder = new File(Environment.getExternalStorageDirectory(), Constants.ROUTE_FILES_TEXT);
if (!folder.exists()) {
folder.mkdir();
}
FileWriter fw = new FileWriter(folder.toString() + "/log.txt", true);
BufferedWriter out = new BufferedWriter(fw);
out.write("Hora: " + TimeService.getCurrentTimeStamp(Constants.TIMESTAMP_PATTERN) + "\n");
out.write("Clase: " + clase + "\n");
out.write("Método: " + metodo + "\n");
out.write("Mensaje: " + object + "\n\n\n");
out.flush();
//out.close();
fw.flush();
fw.close();
}catch (Exception ex){
Log.d(TAG, ex.toString());
return 3;
}
return 0;
}
是嗎?爲什麼?
拋出異常,不返回。評論封閉是什麼修復它,而不是齊平。在關閉之前刷新是多餘的。 – EJP