node.js - Node.js将目录中的文件名与文本文件中的文件名进行比较

标签 node.js electron filenames

我有一个 txt文件,其中包含应在目录中的文件名列表。我还有一个目录,其中有很多文件。我需要从目录删除所有文件,该文件名在txt文件中不存在。

让我提供一个简单的例子来阐明我的问题:
我们有包含以下内容的file.txt:“a.pbo b.txt c.gif”
我们还有一个文件夹(目录),其中包含以下文件:a.pbo,b.txt,c.gif,d.png
由于file.txt中不存在“d.png”,因此我们需要从文件夹(目录)中将其删除。

我当时在考虑使用for循环,遍历文件夹中的所有文件,然后每次打开文件并搜索文件名,但是我对node.js和 Electron 框架完全陌生,不知道该怎么做。

编辑:
链接到我的file.txt的确切内容,并在注释中显示其结构。

最佳答案

您需要 fs 在系统上执行操作。
split 方法允许您将文件名转换为文件名数组-因为它们似乎用空格分隔。
然后, filter 不在列表中的文件名(= !includes)并将其删除(fs.unlinkSync)

您可以执行以下操作:

const fs = require('fs');

const FILENAME = 'youfilename.txt';
const DIRECTORY = '/path/to/yourDirectory';
const SEPARATOR = " ";

const content = fs.readFileSync(FILENAME, 'utf8');
const fileList = content.split(SEPARATOR);
const filesInDir = fs.readdirSync(DIRECTORY);
const filesToRemove = filesInDir.filter(fileName => !fileList.includes(fileName))

filesToRemove.forEach(fileName => fs.unlinkSync(fileName));

请注意,我使用Sync操作是因为它更容易,否则您将不得不处理Promises或callbacks。
同步操作本质上是较慢的,但是我认为在您的用例中,它不会影响程序的性能。

编辑

我将上面的代码保持原样,并为您提供一段代码,该代码可以将您的字符串变成数组数组,然后调整代码即可。

var str = `Array
(
    [0] => .
    [1] => ..
    [2] => a.png
    [3] => logo.paa
    [4] => b.gif
    [5] => d.dll
    [6] => e.dll
    [7] => f.png
)
Array
(
    [0] => .
    [1] => ..
    [2] => text.txt
)
`;

var newStr = str
  .split('\n')
  .filter(s => s.trim() !== "Array" && s.trim() !== "(")
  .join("\n")
  .split(")")
  .map(s => s
    .split("\n")
    .map(s => s
      .trim()
      .split("=> ")[1]
    )
    .filter(n => n)
  )
  .filter(arr => arr.length > 0);

console.log(newStr);


使用regexp会更干净,但是我喜欢String和Array方法,我觉得它更容易理解。

希望能帮助到你,
最好的祝福

关于node.js - Node.js将目录中的文件名与文本文件中的文件名进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50626777/

相关文章:

node.js - 蒙戈数据库 |从文档数组中删除对象

javascript - 如何在特定事件中自定义 Electron 边框?

node.js - 使用app.relaunch后,如何阻止Electron应用重新启动?

reactjs - 如何编写Electron React App入门套件?

standards - 文件名中的小数点

node.js - Web3 + 坚固性 : Passing in arguments to a contract's constructor

node.js - 如何根据mongodb中的日期对记录进行分组

javascript - Selenium 、 Mocha 、MySQL。 mysql运行顺序

php - 我应该使用什么正则表达式来查找不包含指定字符串的文件名?

bash - 在 Bash 中提取文件名和扩展名