我正在我正在开发的类中定义一个缓冲的编写器,但是遇到了问题。
在我定义的类构造函数中:
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();
}
答案 0 :(得分:4)
您的代码存在一些问题:
除此之外,由于您的代码没有多大意义,因此很难理解代码应该做什么。
答案 1 :(得分:1)
为了清楚起见,删除了异常处理程序,代码确实:
rest_logger = new BufferedWriter(new FileWriter("rest_logger.txt"));
rest_logger = writer;
你立即扔掉那个新的BufferedWriter
。它没有多大意义。 rest_logger
将设置为在构造函数调用中移交给您的任何内容。关闭后,rest_logger
也会关闭。
答案 2 :(得分:1)
我不太确定我理解你的问题,但是:
为什么要覆盖新创建的BufferedWriter?
rest_logger = writer;
也许你应该研究一下......