Tag: 文件

使用websocket和nodejs时,文件描述符的编号会增加

我正在使用Websocket库ws npm在5001和nodejs为80端口通信。 我的问题是在一段时间内文件描述符的数量增加,导致更多的内存消耗。 以下是我的代码。 var SOCKETS = []; //Used for publish URL var app = https.createServer(options, function(req, response){ log.debug("connection:"+ req.url); var path = url.parse(req.url,true).pathname; log.debug('path:'+path); //response.writeHead(200,{ 'Content-Type': 'text/html' }); switch(path){ case '/push': client.send(user_message); response.writeHead(200,{ 'Content-Type': 'text/json' }); response.write(JSON.stringify({ 'userids': valid_users})); break; } // Send HTML headers and message response.end(''); }); app.listen(config.websocket_port); var WebSocketServer = require('ws').Server […]

为什么凝视消耗高CPU?

我正在运行凝视( https://github.com/shama/gaze )来监视包含几百个文件的几个文件夹的变化。 现在这个过程消耗了一个稳定的15%的CPU,这意味着四个中的一个完整的内核。 我做了一个检查 – 我跑fs.watch在相同的文件夹列表,并获得具有类似function的0.0%的CPU。 现在,问题是 – 除了阅读代码之外,我怎么知道目标在做什么? 有没有分析工具? 另外 – 你是否已经知道这个问题可能是什么? 系统详细信息:OSX 10.10节点6.9.1凝视1.1.2

删除一个大文件中的一行 – 我应该避免这样做吗?

我发现这个问题是关于在node.js文件中删除一个特定的行,他们正在做的是在数组中删除数据\n ,删除一个元素,重新创build一个string,并用结果覆盖文件。 这对于“普通”文件来说很好,但是我的文件大约是5万行,而且还在不断增长,我不认为把所有文件放在一个数组中,删除一些东西并相信结果足以覆盖文件是个好主意。 基本上我想定期检查随机行,如果条件不满足,删除它们。 安全还是应该避免这样做? 如果没关系,还有另外一种办法,比较适合大文件吗? 一个小背景:文件每隔X分钟写一次,我知道什么时候编辑是安全的。 我的目标是检查+删除足够多的行数,以确保在下一次写作之前完成。 如果我想做一个完整的检查,我也可以暂停写作。

Node.js – 空文件写入,但为什么?

TL; DR为什么写第一个文件,但是剩下的文件是空的? 我在Node.js中有一个循环的文件string的数组列表。 每个string都表示其各自目录中的不同文件。 该数组包含三个需要创build三个独立文件的值。 第一个文件被创build并写入后,第二个和第三个文件被创build,但保持为空。 下面是代码的简短版本。 任何帮助深表感谢。 for(i in file_tree) { fp = fs.createWriteStream(file_tree[i]); for(i in data) { fp.write(data[i]+'\n', function (err) { if(error) throw err;}); } } // end for loop – file_tree ======解决scheme===== file_tree = [ pn+ '/theme/file1', pn+ '/theme/file2', pn+ '/theme/file3', ]; for(i in file_tree) { file_name = file_tree[i]; fp = fs.createWriteStream(file_name); […]

将数据附加到文件asynchronous

我使用这个asynchronousrecursion函数遍历一个目录的文件和文件夹,当find.css文件时,我将数据追加到名为“common.css”的文件中。 var walk = function(dir, done) { var results = []; fs.readdir(dir, function(err, list) { if (err) return done(err); var pending = list.length; if (!pending) return done(null); list.forEach(function(file) { file = dir + '/' + file; fs.stat(file, function(err, stat) { if (stat && stat.isDirectory()) { minimizer(file, function(err, res) { results = results.concat(res); if (!–pending) done(null); […]

如何通过摩卡testing两个文件是否相同

我已经编写了一个node.js脚本,用于扫描非常大的遗留代码库并应用一组更改。 这些更改可能相当复杂,因为这会影响某些存储机制和相关的大小定义。 我已经写了testing,所有的计算和报告是正确的,使用摩卡,柴和sinon。 “ 现在我正在尝试编写一个testing,将更改应用到传统源的20个样本。 我可以使用正确的更改创build20个样本的版本,我只是希望我的testing将所应用的更改与预测的更改进行比较。 所以实质上,testing是文件A和文件B之间的差异,其结果应该是文件是相同的。 Google在数组,string和对象差异上显示了很多结果。 有没有人有解决scheme如何做到这一点的文件? 我应该注意到,我并不是试图重新发明轮子。 我已经用prettydiff了一些prettydiff ,其中包括: prettydiff({source: processedFile, diff: expectedFile, lang: 'text'}).should.equal("Number of differences: 0 differences from 0 lines of text."); 我也试过: expect(prettydiff({source: processedFile, diff: expectedFile, lang: 'text'})).to.equal("Number of differences: 0 differences from 0 lines of text."); 然而,我在这两种情况下得到一个错误,说明Uncaught TypeError: object is not a function 。 使用摩卡testing两个文件的差异的正确方法是什么?

创build一个文件对象或Blob

我们如何在Node js中创build一个文件对象或blob对象? 所需的对象应该与我们在从HTML中的表单上传文件时获得的相同。

如何在node.js中获取string的字节?

我想读取文件的字节大小。 我有这个 var path = 'training_data/dat1.txt'; var fs = require("fs"); //Load the filesystem module var stats = fs.statSync(path); var fileSizeInBytes = stats["size"]; var accSize = 0; var lineReader = require('readline').createInterface({ input: fs.createReadStream(path) }); lineReader.on('line', function (line) { accSize += Buffer.byteLength(line, 'utf8'); console.log(accSize + "/" + fileSizeInBytes); }); lineReader.on('close', function() { console.log('completed!'); }); 但它不打印出正确的文件大小。 7/166 16/166 […]

节点.fs使用一个巨大的目录

用大量的文件来画一个目录。 作为一个粗略的衡量标准,我认为到目前为止我们所看到的最多的是几百万,但从技术上讲,可能会再次上涨。 使用节点,我想从这个目录读取文件,处理它们(基本上是上传),然后把它们移出目录。 很简单。 在应用程序运行时不断添加新文件,而我的工作(就像一艘正在沉没的船上的人)正在填充这个目录。 那么我有什么select? fs.readdir 并不理想 ,它fs.readdir所有的文件名加载到内存中,这样就会成为一个问题。 特别是随着新文件被添加,所以这将需要重复的呼叫。 (以后有人提到这个问题,有人提出来解决这个问题,而这个问题可能在你的时间表内实现,也可能没有实现。) 我已经看了很多fs的插件(graceful-fs,chokadir,readdirp等等),其中没有一个在他们的职权范围内有这个特定的用例。 我也遇到了一些人认为这可以用child_process来处理,还有一个叫做inotifywait的包装器,它和我所要求的完全一致,但我真的不明白这是如何解决潜在的问题,特别是在这个比例。 我想知道我真正需要做的是find一种方法来从目录中获得第一个文件(或者说,真实的一批文件),而不必将整个目录结构读入内存。 某种types的stream可以在读取一定数量的文件后终止? 我知道Go有一个参数用于读取目录中的前n个文件,但是我找不到一个相当的节点,这里有没有人遇到过或有任何有趣的想法? 在这一点上,左场解决scheme更受欢迎!

在nodejs中将JSON数据从前端写入后端

我有ButtonClick.js和TakeData.js文件。 我在下面定义了我的json数据在TakeData.js var dataObj = {}; var locationsObj = "locations"; dataObj[locationsObj] = {}; dataObj[locationsObj].source = []; dataObj[locationsObj].target = []; 当我点击ButtonClick.js中的button和代码片段如下 button() .container(g2) .text(text2) .count(1) .cb(function() { console.log(dataObj[locationsObj].source[0]); console.log(dataObj[locationsObj].source[1]); console.log(dataObj[locationsObj].target[0]); console.log(dataObj[locationsObj].target[1]); console.log("SaveFile"); })(); 我想发送json数据到nodejs文件写入函数中,如下所示。 fs.writeFile('sample.txt', [need to insert my JSON], function(err) { if(err) return console.log(err); console.log('Hello JSON > sample.txt'); }); 我怎样才能做到这一点? 还有另一种有效的方法吗?