比较两个文本文件--并将差异保存到新文件中。

问题描述 投票:0回答:1

我目前正试图通过这个问题来迷惑自己的脑袋--所以方案是。

1. 从FTP下载textFile1

2. 从FTP下载textFile2

3. 从PC上的本地文件中读取textFile1&2中的数据并进行比较。

4. 只将差异(如全行)保存到textFile 3中。

我试过在上面做fs.readFile - 和比较fileDiff (npm diff);然而我有点不确定如何处理,所以它只保存1&2之间的实际差异 - 到第三个文本文件。

把它看作是一个 "比较&保存"。

希望有人有什么想法,如何实现这一点,它有点难以解释。


/ 更新

代码片段(或看下面)。https:/jsfiddle.netmenixpy3eqnfL

const ServerLog = "ServerDM/TheIsle/Saved/Logs/TheIsle.log";
const LocalSaveOld = "TheIsleData/TheIsle.log";
const LocalSaveNew = "TheIsleData/TheIsleNew.log";

async function example() {
    const client = new ftp.Client();
    client.ftp.verbose = true;

    try {
        await client.access({
            host: config.ftpHost,
            port: config.ftpPort,
            user: config.ftpUser,
            password: config.ftpPassword,
            secure: config.ftpSecure,
        });
        await client.downloadTo(LocalSaveOld, ServerLog);

        if (fs.existsSync(LocalSaveOld)) {
            fs.readFile(LocalSaveOld, function (err, data1) {
                console.log(data1);
                fs.readFile(LocalSaveNew, function (err, data2) {
                    console.log(data2);
                    var difference = fileDiff.diffLines(data1, data2);
                    console.log(difference);
                });
            });

            await fs.rename(LocalSaveOld, LocalSaveNew, function (err) {
                console.log("old was copied to new");
                if (err) console.log("ERROR: " + err);
            });
        }
    } catch (error) {
        console.log("FTP ERROR");
        client.close();
    }
}

这是我目前玩过的代码,显然很可能需要重新编码。

我的想法是首先下载 服务器日志 通过FTP将文件传到电脑上(它保存为 LocalSaveOld 在PC上)--然后它应该在5分钟后再次重新下载ServerLog,保存为 LocalSaveNew

然后我想比较LocalSaveOld和LocalSaveNew,并将5分钟内的 "新数据 "保存到第三个文件(这就是我真正的困惑)

我知道了如何从FTP下载ServerLog,保存为LocalSaveOld。

我知道了如何将LocalSaveOld改名为LocalSaveNew。

  • 我需要一个方法来"重新下载" & "比较"它每个 5分钟 左右,对于新数据. 并将其保存到一个单独的文本文件或其他文件中,这一点在代码中是缺失的。 (让我们称之为 NewLogData)

一位朋友有一个Python的例子,但显然我的例子是用Javascript做的--我想达到同样的效果。

javascript save fs
1个回答
0
投票
const string1 = fs.readFileSync(LocalSaveOld, { encoding: "utf8" });
const string2 = fs.readFileSync(LocalSaveNew, { encoding: "utf8" });
const diff = (diffMe, diffBy) => diffMe.split(diffBy).join("");
const finalString = diff(string2, string1);
fs.writeFile("./TheIsleData/diff.log", finalString, function (err) {
    if (err) return console.log(err);
    console.log("written");

© www.soinside.com 2019 - 2024. All rights reserved.