我目前正试图通过这个问题来迷惑自己的脑袋--所以方案是。
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。
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");