- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何实现一个系统,其中多个 Node.js 进程使用 fs.createWriteStream
写入同一文件,这样它们就不会覆盖数据?看起来 fs.createWriteStream 的默认设置是在调用该方法时清除文件。我的目标是清除一次文件,然后让所有其他后续写入者仅追加数据。
我应该先使用fs.createWriteStream
,然后使用fs.appendFile
吗?或者有没有办法为每个进程打开一个流,而不仅仅是第一个打开文件的进程?
最佳答案
Should I use fs.createWriteStream and then fs.appendFile?
您可以使用其中任何一个。
使用 fs.createWriteStream 您必须像这样更改标志:
fs.createWriteStream('your_file',{
flags: 'a+', // default is 'w' (just 'a' might be enough here, i'm not sure)
})
如果该文件不存在,则应创建该文件;如果存在,则应使用写访问权限打开该文件,并将指针设置为 end。 (追加模式)
如何使用fs.appendFile
应该很清楚,而且它的作用几乎相同。
现在是多个进程访问同一文件的问题。显然,只有一个进程可以同时以写访问权限打开同一文件。因此,如果另一个进程具有写访问权限,则需要等待文件被释放。您可能需要一个库来实现这一点。
例如:https://www.npmjs.com/package/lockup
或者这个:https://github.com/Perennials/mutex-node
您还可以在这里找到更多信息:https://www.npmjs.com/browse/keyword/lock
或这里:https://www.npmjs.com/browse/keyword/mutex
我还没有尝试过这些库中的任何一个,但我发布的库和列表中的其他几个库应该完全满足您的需要。
关于node.js - 多个进程上的 fs.createWriteStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36658995/
我正在使用 Node js 将文本文件写入磁盘: const fs = Promise.promisifyAll(require('fs')); var path = directory + '/cp
我尝试了多种让我的函数返回参数的变体,以便我只能在一个步骤完成时运行我的函数,但寻找一种不会让我陷入回调 hell 的最佳方法。 我有以下功能 function convertPdfToImage(f
我有 1 个问题。不明白它是如何工作的。 我想在 fs.createWriteStream 中创建文件,因此仅适用于相对路径。所有文件夹均已创建 let p = path.resolve(`../up
我正在尝试创建发票,但由于某种原因,下面的行不起作用: document.pdfkitDoc.pipe(fs.createWriteStream('./file.pdf')) 也许是语法问题,我真的不
我正在使用 Node.js 实现文件上传,我的代码在正常情况下工作正常。 但是,当我让它无法写入文件时(例如,将其写入不存在的目录),它会调用错误处理程序,fstream.on('error', ..
我正在使用 npm 包 busboy 来解析多部分表单请求和写入流以将发送的文件写入磁盘。 这适用于小文件,但是当我尝试使用更大的文件 (7MB) 时,似乎只有大约 5MB 被写入磁盘,然后似乎事情停
我正在尝试开发一个 React 应用程序来帮助我将文件下载到我的亚马逊云端。为此,我使用了这个模块 download-file-with-progressbar 这是我的代码: var d
我正在尝试开发一个 React 应用程序来帮助我将文件下载到我的亚马逊云端。为此,我使用了这个模块 download-file-with-progressbar 这是我的代码: var d
在我的 Electron 应用程序的主进程中,我试图处理在创建一个已存在的文件时抛出的异常。然而,我的 catch 子句从未被输入,异常被发送给用户。我做错了什么? let file; try {
我正在尝试将图像从网址安全上传到服务器。 var http = require('http'); var fs = require('fs'); var path = require('path')
如何实现一个系统,其中多个 Node.js 进程使用 fs.createWriteStream 写入同一文件,这样它们就不会覆盖数据?看起来 fs.createWriteStream 的默认设置是在调
伙计们:我正在创建一个 Angular/Node 应用程序,用户可以在其中通过选择相关缩略图来下载文件。 下载文件时,会显示一个包含下载进度的小列表 - 使用 status-bar . 下载文件后会显
这两个操作之间的基本区别是什么? someReadStream.pipe(fs.createWriteStream('foo.png')); 对比 someReadStream.on('data',
我想在客户端制作一个 pdf 文件,然后必须通过 REST 调用将它发送到服务器端。 随着文件的生成,我没有问题。我使用 pdfMake 生成文件,效果很好。 因为我想将文件发送到我的后端,所以我必须
问题 我正在尝试扫描驱动器目录(递归遍历所有路径)并使用 fs.createWriteStream 将所有路径写入文件(因为它正在查找它们)以保留内存使用率低,但不起作用,扫描期间内存使用量达到2GB
我做了一个简单的从http下载函数如下(为了简化省略了错误处理): function download(url, tempFilepath, filepath, callback) { var
我正在尝试将数据写入 Node.js 中的文本文件。初始化写入流时,我收到以下错误消息: 最佳答案 确保您已将其包含在 Node 程序的顶部 var fs = require('fs'); 此外,“S
我找不到解决这个问题的方法。使用 Node fs,我使用 createWriteStream 创建了一个文件,将数据写入其中,然后尝试删除它,但在 Node 打开时无法删除它。 以下是我在这个过程中使
我正在 try catch “未捕获的异常”并将它们写入服务器上的文件中。我的代码是: var cluster = require('cluster'); // The master's job to
我正在使用 gulp、gulp-eslint 和 gulp-open 创建 ESLint 结果报告。linting 和文件写入部分工作正常,但打开我编写报告的文件的任务却无法正常工作。 gulp.ta
我是一名优秀的程序员,十分优秀!