在nodejs中,如果文件包含指定的文本,如何读取文件并将其移动到另一个文件夹

时间:2018-05-01 17:07:06

标签: node.js

所以我有以下代码

right_on= 'outcode'

但我没有得到所需的输出。因为看起来像readfile是由一个单独的线程执行的,所以“processed”的值不可靠。

我对nodejs不太熟悉,所以非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

是的,你是对的,你的执行是由不同的线程执行的。

在这种情况下,您需要使用promises。

您可以使用“承诺FS ”轻松解决您的需求(无论如何,您可以使用任何其他承诺解决方案)。

您的代码如下所示:

fs = require('promise-fs');

var fname = 'test.txt' ;
var toMove = false ;

fs.readFile('test.txt','utf8')
    .then (function (content) {
        if(content.indexOf('is VALID') !== -1) {
            console.log('pattern found!');
            toMove = true ;
        }
        else { toMove = false
        }
        return toMove ;
    }).
    then (function (toMove) {
           if(toMove) {
              var oldPath = 'test.txt'
              var newPath = '/tmp/moved/file.txt'
              fs.rename(oldPath, newPath, function (err) {
                if (err) throw err
                console.log('Successfully renamed - moved!')
              }) ;
           }
    })
    .catch (function (err) {
        console.log(err);
    })

创建文件“test.txt”并添加以下内容:

this is text.file contents
token is VALID

上面的代码将评估“VALID”是否作为内容出现,如果是,那么它会将文件“test.txt”从当前文件夹移动到“/ tmp”目录中名为“moving”的新文件。它还会将文件重命名为“file.txt”文件名。

希望它对你有所帮助。

此致

答案 1 :(得分:0)

看起来你正在影子@Inject,试图将它用作变量和节点模块。最简单的方法是为文件选择一个不同的变量名称,并将处理逻辑移到path的回调中。

fs.readFile