【发布时间】:2014-09-15 04:44:40
【问题描述】:
我有一个简单的日志工具可以将日志数据写入磁盘,它的工作原理如下:
- 使用
fs.createWriteStream创建一个可写流,并使用标志“a”进行附加。这会创建或打开文件供我写入数据。 - 使用
writeStream.write()将数据写入我的日志文件。
这非常有效,除了以下两种情况:
- 我在应用程序运行时打开日志文件,更改一些内容,然后保存日志文件。
- 我在应用程序运行时删除了日志文件。预期行为是重新创建文件并继续记录。
在这两种情况下,我仍然可以毫无错误地调用writeStream.write()。
在应用程序运行时修改或删除日志文件后检查我的writeStream 对象显示writeStream.writable 属性为true。每次我调用 writeStream.write() 时,writelen 属性都会增加,这让我相信 writeStream 认为一切都很好,即使不是。
我的问题:
- 为什么在外部修改和保存我的日志文件会导致
writeStream.write()停止向我的文件写入数据?我该如何解决? - 为什么从外部删除我的日志文件会导致
writeStream.write()停止向我的文件写入数据?我该如何解决?
【问题讨论】:
标签: javascript node.js file stream