我正在调查x.replace(/\n/g, "</br>");
导致截止问题的问题。该程序在两个不同的服务器上运行,但具有相同的截止问题。看来日志文件没有正确刷新。所以我决定深入研究.close()
源代码。我没有看到.close()
被调用。我错过了什么吗?我们应该一直打电话给.flush()
吗?根据这个答案,它应该无关紧要:http://www.w3schools.com/jsref/jsref_replace.asp
我在说什么:
.flush()
稍后我致电 private static void write_to_file(String incoming){
output_stream.write(incoming);
output_stream.write(System.lineSeparator());
}
源代码:
output_stream.close();
日志文件:
/** * Closes the stream and releases any system resources associated * with it. Closing a previously closed stream has no effect. * * @see #checkError() */ public void close() { try { synchronized (lock) { if (out == null) return; out.close(); out = null; } } catch (IOException x) { trouble = true; } }
答案 0 :(得分:2)
正如您已正确指出的question所述,在流上调用select * from workpaths where to_date(wp_stime, 'hh24') between 9 and 17;
就足以刷新您写入流中的内容。如果输出被截断,则存在一些常见的缺陷:
未调用您的close()
方法,例如如果您将其放在close()
块中而不是catch
;)
在自定义流上调用finally
并不会将调用传播到基础流。
如果您没有将String正确转换为字节,问题也可能出现在编码中。