Articles of fs

Node.js不closures由fs.createReadStream()创build的文件

在我的服务器上,每次用户使用我们的服务时,我们都必须从服务器获取JSON文件。 我通过在我自己的函数中使用fs.createReadStream()来做到这一点。 function getJSONFromServer(filepath, callback){ var data = fs.createReadStream(filepath); data.on('error', function (error) { console.log("Caught", error); callback(undefined, error); }); var jsonFile = ""; data.on('data', function(chunk) { jsonFile += chunk; }); data.on('end', function() { var jsonData = JSON.parse(jsonFile); callback(jsonData); data.destroy(); data.close(); }); } 这样做的工作,但它并没有closures文件的连接。 所以读取1024个文件(在我的服务器上的限制)后,Node.js会产生错误EMFILE, too many open files 。 然后我必须杀死我们的Node.js服务器,再次打开它,这将清除“打开的文件”。 我检查由lsof -i -n -P | grep […]

可以多个fs.write追加到同一个文件保证执行的顺序?

假设我们有这样一个程序: // imagine the string1 to string1000 are very long strings, which will take a while to be written to file system var arr = ["string1",…,"string1000"]; for (let i = 1; i < 1000; i++) { fs.write("./same/path/file.txt", arr[i], {flag: "a"}}); } 我的问题是, will string1 to string1000 be gurantted to append to the same file in […]

Node.js – 如何处理stream错误事件

我正在从fs.createReadStream()返回的文件stream中读取数据,并将其pipe道化为使用zlib.createGzip()创build的gzipstream,然后将gzipstreampipe道化为HTTP响应。 我不知道如何处理这些stream上的“错误”事件。 我只是想确保所有的stream被closures,错误被logging下来,没有资源泄漏(注意文件streamautoClose设置为true)。 例如,如果在fs读取stream上发生错误,那么将如何影响gzipstream和响应stream? 这个“错误”事件会自动传播还是只是未处理和崩溃我的应用程序? 我应该听每个stream的“错误”事件,还是只听最后一个stream? 如果我听到fsstream的“错误”,会发生什么情况 – gzipstream是否仍然检测到发生了错误?

如何通过节点中的mongojs将.json文档插入到mongo服务器

我是新的nodeJS和MongoDB。 我有这个代码: var fs = require('fs'); var mongojs = require('mongojs'); var db = mongojs('monitor', ["configurations"]); fs.readFile('json/object1.json', 'utf8', function (err, data) { if (err) throw err; console.log(data); db.configurations.insert(data, function(err, doc) { console.log(data); if(err) throw err; }); }); 没有任何数据蒙了,我没有错误。 这两个console.log(数据)也打印JSONstring。

如何访问fscallback方法中的文件的名称?

如何从callback中访问fs.read , fs.stat …方法的参数? 例如,如果我想根据其大小处理文件(coffeeScript)代码片段 #assuming test1.txt exists filename = "./test1.txt" fs.stat filename, (err, stats) -> data = filename:filename,size:stats.size console.log data #further process filename based on size filename = "./test2.txt" 版画 { filename: './test2.txt', size: 5 } 因为文件名被设置为“./test2.txt”。 如果我使用fs.statcallback中的filenamevariables处理/读取文件,它将使用不是打算的test2.txt 。 我期望在callback中看到的是 { filename: './test1.txt', size: 5 }

如何复制node.js中的文件(包括修改时间)?

我能够使用以下方法复制node.js中的文件: var readStream = fs.createReadStream(fromFilePath); readStream.pipe(fs.createWriteStream(toFilePath)); 问题是如何复制/保持修改的时间(mtime)就像在常规文件复制命令中一样。

node.js中的readFileSyncerror handling

我有这个代码 var fd = fs.openSync(filePath,"r"); var fr = fs.readSync(fd, buffer, 0, size, 0); 它会抛出这样的错误 events.js:72 throw er; // Unhandled 'error' event ^ Error: OK, open 'C:\Users\iahmed16\Desktop\eclipse WS\test\images\af31a9e0a98939be82f887b0005c21752e71425e.jpg' 如何处理这个错误? 如果你知道错误的含义是什么?

如何读取节点js中的csv文件

我正在尝试使用节点js读取一个csv文件。 她是我的代码 fs.readFile(config.csvUploadPath, function read(err, data) { if (err) { throw err; } console.log(data + 'my data') }); 安慰: ID D11 D33 D55 在这里我想获得列ID中的元素并将它们存储在一个数组中。 我怎样才能做到这一点? 任何人都可以build议我帮忙。 谢谢。 我的控制器: var partnersModel = new partners(params); fs.readFile(config.csvUploadPath, function read(err, data) { if (err) { throw err; } dataArray = data.toString().split(/\r?\n/); dataArray.forEach(function(v,i){ if(v !== 'DUI'){ partnersModel.dui.push(v); } }); }); […]

Node.js'fs' – 更有效的方式来创build文件+清除文件

目前我正在使用fs.createWriteStream(filePath)做两件事情: 创build文件,如果它不存在 清除/删除文件的内容 但是,我从来没有真正写信给这个stream,所以我没有真正使用它。 我想知道这是如何犹太教,如果我应该使用更有效或更明确的方法来创build文件,如果它不存在,并清除文件。 有任何想法吗?

从node.js(fs模块)中的文件stream中删除最后一个字符

使用node.js,我试图build立一个对象数组,并将其写入一个文件。 为此,我使用内置的fs库。 在调用var file = fs.createWriteStream('arrayOfObjects.json'); 和file.write('[')我运行了几个asynchronous函数,最终追加这样的对象: file.write(JSON.stringify(objectToAppend) + ',\n') 我可以确定什么时候所有的对象都停止了追加,这是我运行file.write(']')和file.end() 。 我的问题是添加最后一个对象的最后一个逗号导致JSON无效。 由于脚本的asynchronous性质,确定何时何地创build最后一个对象是非常困难的,所以我想知道是否有办法从文件stream中去除或删除字符。 如果是这样,我可以在添加最后的']'字符之前做到这一点。 我可以手动执行此操作,但是我希望将其传送给另一个应用程序。 我想过的唯一的解决scheme是使用fs.truncate()函数,但是这似乎不适用于文件stream, file.length或file.length()将给我的内容的长度,因为它不是一个string,所以很难确定如何或在哪里截断文件。 现在我刚刚在数组的末尾添加了'{}]' ,以使其成为有效的JSON,但这个空对象稍后可能会导致一些问题。 另外请注意:我在这个stream中写入的对象数组非常大,所以我宁愿不要结束stream并重新打开文件 。