问题标签 [fs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 数据事件未触发 Node.js
我正在编写一个应用程序来下载带有扩展节点-ytdl 的 YouTube 视频。我想向客户端发送一个下载进度指示器,所以我试图获取块信息来计算它。我的代码看起来像这样。
奇怪的是,即使下载完成时会触发“关闭”,我也没有从“数据”事件中获得任何日志。视频写得对。我对 Node.js 流有点陌生。我做错了什么吗?
node.js - Nodejs: Writing a lot of files: createWriteStream or writeFile?
I have to write a lot of files and I'm wondering which method suits best. The data are text.
I'm a bit concerned on how I can close properly the operation. createWriteStream
has a end()
method or fs.close()
, which closes the stream; writeFile
has no such method if I well-understood, which may be inefficient after a long batch of write. All the examples of fs.writeFile never mention fs.close()
.
javascript - Node.js:检测到一个文件,用 fs.createWriteStream() 打开,被删除
假设我有以下节点程序,一台机器会“Ping!”:
每秒钟,它都会向控制台打印一条消息,并将其附加到日志文件中(如果需要,它将在启动时创建)。这一切都很好。
但是现在,如果我在进程运行时删除machine.log
文件,它会继续愉快地嗡嗡作响,但是写入将不再成功,因为文件已经消失了。但看起来写入失败了,这意味着我需要明确检查这种情况。我搜索了Stream 文档,但似乎找不到在发生此类事情时发出的明显事件。的返回值write()
也没有用。
如何检测我正在写入的文件何时被删除,以便我可以尝试重新打开或重新创建文件?这是一个 CentOS 盒子,如果相关的话。
node.js - Chokidar (Node.js) 的效率如何?
我在服务器上有一个缓存引擎,它缓存在根目录下访问的所有文件。我正在考虑使用 Chokidar 来观察整个目录树(递归)以进行文件更改并相应地更新缓存。但我担心如果子目录包含数十万个文件会发生什么 - Chokidar 的效率如何?
node.js - nodejs fs 似乎很贪婪
我已经设置了一个要点来显示一个从磁盘流式传输文件的小程序随时间推移的内存使用情况。
分配的内存rss
永远process.memoryUsage()
不会下降。从其他项目中,我知道另一个文件读取将能够重用其中的一些内存,但该内存永远不会被释放。
我知道当其他一些进程满足内存时,操作系统可以占用未充分利用的内存并将其写入交换,但这只是一个临时修复(并且可能导致我的机器无缘无故地用完交换) .
由于此“泄漏”不在 javascript 堆中,因此我认为这与我流式传输此文件的方式无关,但我想确认一下。我应该做些什么来释放这个内存吗?
javascript - 与 fs 和 bluebird 的承诺
我目前正在学习如何在 nodejs 中使用 Promise
所以我的第一个挑战是列出目录中的文件,然后使用异步函数通过两个步骤获取每个文件的内容。我想出了以下解决方案,但有一种强烈的感觉,这不是最优雅的方法,尤其是我将异步方法“转换”为 Promise 的第一部分
现在链接两个承诺:
正如我在上面所写的,它返回所需的结果,但我很确定有一种更优雅的方法。
javascript - 使用 Node js 显示目录中的文件名
我有以下代码用于在给定目录中显示文件名
在 for 循环条件完成后,如何将所有文件名存储在数组中。
javascript - Node.js:如果方法抛出异常,console.log 消息不会显示...为什么?
在 Node.js 中,如果我有一个引发异常的方法,来自该方法的 console.log 语句不会触发。我认识到,在下面的简单测试用例中,我应该从 readFileSync 调用中捕获异常,或者对此采取防御措施。只是好奇是否有人可以向我解释这种行为。
简单的测试用例:
输出:
node.js - nodejs从绝对路径获取文件名?
如果有任何 API 可以从绝对文件路径中检索文件名?
例如"foo.txt"
从"/var/www/foo.txt"
我知道它适用于字符串操作,fullpath.replace(/.+\//, '')
但我想知道是否有更“正式”的方式,比如file.getName()
在 java 中,可以做到这一点。
NodeJS从绝对路径获取文件名?