【问题标题】:How to turn a file into a string in NodeJS [duplicate]如何在NodeJS中将文件转换为字符串[重复]
【发布时间】:2019-05-26 01:04:14
【问题描述】:

我正在尝试将文本文件(在我的机器上)转换为字符串。最好/最简单的方法是什么? 我正在寻找一个看起来像这样的基本功能:

function fileToString(filepath) {
   //this returns a string with the contents of the file
}

我应该怎么做?

编辑:我现在知道还有一个问题会问这个问题,但我不明白这个问题,所以我用不同的词问了这个问题。

【问题讨论】:

  • 没有这个基本功能,JS(在浏览器中)不能直接访问用户的本地驱动系统。您需要输入类型的文件和 FileReader API 来实现您所需要的。搜索这些。
  • 你在使用 node.js 吗?
  • 有几个现有的答案bing.com/search?q=javascript+read+file+as+string(即stackoverflow.com/questions/14446447/…)......或者为节点版本添加nodejs......或者你甚至可以回到过去并使用CScript来运行像@一样的JavaScript 987654323@

标签: javascript node.js string file readfile


【解决方案1】:

你需要 node.js 和这段代码:

const fs = require('fs')

const fileContents = fs.readFileSync('./myFile').toString()

【讨论】:

  • fs.readFileSync('./myFile', 'utf8') 返回一个字符串。不需要 .toString() nodejs.org/api/fs.html#fs_fs_readfilesync_path_options
  • 没错!这就是为什么使用该函数是一种更好的做法,因为它被设计为添加“utf8”作为编码选项。否则,它会返回一个缓冲区,您必须将其转换为字符串。既然函数可以返回你想要的类型,为什么还要让函数返回一个缓冲区呢?
【解决方案2】:

您无法在 Javascript(基于浏览器)中执行此操作,因为它无法访问文件系统。 你必须使用 NodeJs。

var fs = require('fs');

fs.readFile('DATA', 'utf8', function(err, contents) {
    console.log(contents);
});

这将打印文件的内容。将内容存储在变量中。 JS 有一个 .toString() 函数,它可以做你想做的事。

【讨论】:

  • 说“您不能在 Javascript 中执行此操作”是不正确的,并且可能会误导初学者。我认为基于浏览器的 JS 运行时系统不支持 FileSystem 访问更好。 Node.js,另一个 JS 运行时系统(不是基于浏览器的),支持它。
  • 有趣的是,现在可以在 Windows 上使用本地运行的 JavaScript 读取文件近 20 年了...
  • 说得对,很好。
  • @NurbolAlpysbayev 不,NodeJS 不是 Windows 上可用的第一个 JavaScript 命令行运行程序 - CScript/WScript 在 2000 年之前存在,.Net 编译器 (jsc) 自 2001 年左右就存在 (en.wikipedia.org/wiki/JScript_.NET) .您可以找到示例stackoverflow.com/questions/28881184/…,或者如果您需要更多信息,MSDN 包含大量信息以及 SO。搜索 - bing.com/search?q=cscript%20command%20javascript
  • @NurbolAlpysbayev 还有HTA,让您可以将带有脚本的 HTML 页面作为本地应用程序运行,并且几乎可以完全访问本地资源(自 1999 年以来)。
【解决方案3】:

您需要为此使用Node.js。代码是:

const fs = require('fs');
const fileName = "myFile.txt";
const fileData = fs.readFileSync(fileName, "utf8");

【讨论】:

  • 这个答案不正确。 readFile 不返回文件内容。另一方面,readFileSync 可以(但不是字符串,而是缓冲区)。
  • "如果指定了编码选项,那么这个函数返回一个字符串。否则它返回一个缓冲区。"来自 nodejs 文档nodejs.org/api/fs.html#fs_fs_readfilesync_path_options。嘘。
  • 我相信我现在已经修复了它@Mark - 但文档有点不清楚。应该是string 还是utf-8
  • (文件名,“utf8”)
【解决方案4】:

就像 Nurbol Alpysbayev 和 Ashay Mandwarya 在他们的回答中所说的那样,您需要为支持本地文件系统访问的运行时系统编写 Javascript。嵌入在浏览器中的运行时系统(在浏览器上运行的经典 JS 方式)不支持。

Node.js 是一个流行的 JS 运行时系统,支持 so 可以使用。您的 Node.js 代码可能如下所示:

const fs = require('fs');

function fileToString(filepath) {
   fs.readFile(filepath, (err, data) => {
       if (err) throw err;

       return data;
   });
}

【讨论】:

  • 这里确实需要另一个相同的答案,除了许多其他类似问题的类似帖子......至少不用说新东西。
  • 我完全按照 OP 的要求回答。没有人按照 OP 想要的方式以函数的形式编写代码。
  • 介意解释为什么你拒绝了我的答案,即使我根据 OP 的要求提供了不同格式的东西,到目前为止没有其他人在他们的答案中这样做?
猜你喜欢
  • 2018-02-13
  • 2021-10-12
  • 2020-08-23
  • 1970-01-01
  • 2012-04-13
  • 2021-06-17
  • 2012-10-22
  • 2019-11-28
  • 2019-12-06
相关资源
最近更新 更多