我正在定義一個正在開發的類中的緩衝作者,但遇到問題。BufferedWriter - 流在程序執行過程中過早關閉
在類的構造函數我定義:
public class RestHandler {
public static BufferedWriter rest_logger;
public RestHandler(parsedXMLConfigData _config, BufferedWriter writer) {
rest_logger = writer;
try {
rest_logger.write("RestHandler instance finished init and ready to receive calls!" + "\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
這工作,並打印文本到我的文件。但是,當我嘗試在我的類方法中的另一個使用相同rest_logger
:
@POST
@Path("{subResources: [a-zA-Z0-9_/]+}")
public void postHandler
(
@Context final UriInfo uriInfo,
@PathParam("subResources") String subResources) {
try {
rest_logger.write("TEXT...");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
它給了我一個流閉合異常!我要指出,我用它來關閉流:
protected void finalize() throws Throwable {
rest_logger.close();
}
我修復了mycode(這是我的舊版本) – 2012-02-18 10:33:42
+1。 @MichaelA - 除了JB Nizet提到的所有事情之外,導致您的問題的唯一原因是使您的BufferedWriter變爲靜態,然後在'finalize()'方法中關閉它。請記住,finalize是一個***實例***級別的方法,您可以在其中操作*** class ***級別變量。 – Perception 2012-02-18 10:43:40