1

如果文件内容发生更改,我正在尝试获取 node.js 脚本来显示文本文件的内容。

这是我到目前为止所得到的:

var http = require('http');
var fs = require("fs");

http.createServer(function (req, res) {

fs.watch("/Users/{username}/Desktop/data.txt",function(event,file) {

    fs.readFile('/Users/{username}/Desktop/data.txt', 'utf8', function (err,data) {
        if (err) {
            return console.log(err);
        }

        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end(data);
        //^ this doesn't work, just returns a blank page

    });
});

}).listen(1337, '0.0.0.0');

不幸的是,它只显示一个空白页。我究竟做错了什么...?

4

2 回答 2

0

很可能任何更改文件的过程都是通过以写入模式打开文件然后重写它来实现的。发生这种情况时,您将在其他进程打开文件后立即收到通知,此时它将为空,因为尚未写入。

最好设置每次收到更改通知时触发的超时(即每次在超时未决时收到通知,清除超时并开始新的超时),并且仅在超时完成时读取文件。

于 2012-10-11T06:43:09.463 回答
0

这个怎么样:

var http = require('http');
var fs = require("fs");

function dataHandler(data) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end(data);
}

http.createServer(function (req, res) {

fs.watch("/Users/{username}/Desktop/data.txt",function(event,file) {

    fs.readFile('/Users/{username}/Desktop/data.txt', 'utf8', function (err,data) {
        if (err) {
            return console.log(err);
        }

        dataHandler(data);

    });
});

}).listen(1337, '0.0.0.0');
于 2012-10-11T07:44:46.173 回答