检查文件是否包含 Node.js 中的字符串

在 Node.js 中检查文件是否包含字符串

Check if a File contains a String in Node.js

在 Node.js 中检查文件是否包含字符串:

  1. 使用fs.readFileSync()方法读取文件。
  2. 使用includes()方法检查字符串是否包含在文件中。
  3. 如果字符串包含在文件中,includes方法将返回。true
索引.js
// 👇️ if using ES6 Imports // import {readFileSync, promises as fsPromises} from 'fs'; const {readFileSync, promises: fsPromises} = require('fs'); // ✅ read file SYNCHRONOUSLY function checkIfContainsSync(filename, str) { const contents = readFileSync(filename, 'utf-8'); const result = contents.includes(str); return result; } // 👇️ true console.log(checkIfContainsSync('./example.txt', 'hello')); // -------------------------------------------------------------- // ✅ read file ASYNCHRONOUSLY async function checkIfContainsAsync(filename, str) { try { const contents = await fsPromises.readFile(filename, 'utf-8'); const result = contents.includes(str); console.log(result); return result; } catch (err) { console.log(err); } } // 👇️ Promise<true> checkIfContainsAsync('./example.txt', 'hello');

第一个示例中的函数同步读取文件的内容。

fs.readFileSync
方法将文件路径作为第一个参数,将编码作为第二个参数

该方法返回所提供路径的内容。

如果省略encoding参数,函数将返回一个缓冲区,否则返回一个字符串。

我们使用
String.includes
方法来检查文件的内容是否包含提供的字符串。

includes方法执行区分大小写的搜索,以确定是否在另一个字符串中找到提供的字符串。

如果您需要进行不区分大小写的搜索,请将文件内容和传入的字符串转换为小写。

索引.js
// 👇️ if using ES6 Imports // import {readFileSync, promises as fsPromises} from 'fs'; const {readFileSync, promises: fsPromises} = require('fs'); // ✅ read file SYNCHRONOUSLY function checkIfContainsSync(filename, str) { const contents = readFileSync(filename, 'utf-8'); // 👇️ convert both to lowercase for case insensitive check const result = contents.toLowerCase().includes(str.toLowerCase()); return result; } // 👇️ true console.log(checkIfContainsSync('./example.txt', 'HELLO'));
上面的代码片段假定example.txt在同一目录中有一个文件。确保也在同一目录中打开您的终端。
例子.txt
hello world one two three

示例中的目录结构假设index.js文件和
example.txt文件位于同一个文件夹中,我们的终端也在该文件夹中。

或者,您可以使用该fsPromises对象异步读取文件。

在 Node.js 中检查文件是否包含字符串:

  1. 使用fsPromises.readFile()方法读取文件。
  2. 使用includes()方法检查字符串是否包含在文件中。
  3. 如果字符串包含在文件中,includes方法将返回。true
索引.js
// 👇️ if using ES6 Imports // import {readFileSync, promises as fsPromises} from 'fs'; const {readFileSync, promises: fsPromises} = require('fs'); // ✅ read file ASYNCHRONOUSLY async function checkIfContainsAsync(filename, str) { try { const contents = await fsPromises.readFile(filename, 'utf-8'); const result = contents.includes(str); console.log(result); return result; } catch (err) { console.log(err); } } checkIfContainsAsync('./example.txt', 'hello');

fsPromises.readFile
()
方法异步读取所提供文件的内容。

如果您没有为encoding参数提供值,则该方法返回一个缓冲区,否则返回一个string

该方法返回一个满足文件内容的承诺,因此我们必须await使用它或使用其.then()上的方法来获取已解析的字符串。

请注意,该checkIfContainsAsync函数返回一个使用布尔值解析的 Promise。

它不像第一个代码片段中的同步方法那样直接返回布尔值。