Tag: 文件io

非阻塞(事件驱动的I / O)与阻塞I / O

最近我偶然发现了一个名为nodeJS的漂亮的JS库,它就像服务器端的JS一样。 语言的主要特点是使用I / O,它使I / O的固有容量完全无阻塞使用callback! 我的问题是,如果这种完全不阻塞的I / O机制过去存在(给定事件驱动的I / O已经存在很长时间了),为什么它们在C#和高级语言Java(尽pipeJava有支持非阻塞I / O的NIO实现)? 目前,简单的文件读/写操作导致完全的I / O阻塞,事件驱动的I / O不是这种情况。 我想更好地理解事件驱动的I / O,以及它与我们在Java中的不同之处。

如何正确地刷新Node.js文件的writeStream?

我的问题是,我不能确定一个文件已经成功写入文件已closures。 考虑以下情况: var fs = require('fs'); var outs = fs.createWriteStream('/tmp/file.txt'); var ins = <some input stream> … ins.on('data', function(chunk) { out.write(chunk); }); … ins.on('end', function() { outs.end(); outs.destroySoon(); fs.stat('/tmp/file.txt', function(err, info) { // PROBLEM: Here info.size will not match the actual number of bytes. // However if I wait for a few seconds and then […]

错误:ENOENT重命名节点/快递应用程序中的文件

我正试图上传一个文件在我的节点/快递应用程序,我收到以下错误: { [Error: ENOENT, rename '/tmp/64124a9886fdb03f1faee159bc533776'] errno: 34, code: 'ENOENT', path: '/tmp/64124a9886fdb03f1faee159bc533776' } /home/frankie/Projects/LP/routes/manager/deliverables.js:51 throw err; ^ Error: ENOENT, rename '/tmp/64124a9886fdb03f1faee159bc533776' 这里是我的应用程序的相关代码: if (req.files.file.name !== '' && req.files.file.size !== 0) { // this will move the uploaded file from the tmp folder to the uploads folder fs.rename(req.files.file.path, app.get('loc') + "uploads/" + name + "-" + […]

如何处理电子本地file upload?

我很难搞清楚如何在primefaces电子上进行file upload。 我会张贴代码,但我甚至不知道从哪里开始。 在标准的Web应用程序中,我会通过标准回传或使用ajax请求从客户端发送到服务器。 我有一些很酷的解决scheme。 但在电子的情况下,我不知道在哪里或如何“发布”文件。 我想我只想从node.js访问我的<input type='file' />的内容。 我该怎么做呢? 我可以发布到浏览器进程,但我不知道“地址”是什么。 或者我需要在我的应用程序中创build一个单独的“页面”,只是为了接受表单文章? 我在web-dev中的背景可能使我对一些明显的答案感到迷惑,有人可以帮忙吗? 编辑 只是为了添加更多的上下文,我有一个.csv文件,我想允许用户上传。 然后,我将使用node-csv处理这些数据,并将每个返回的行插入到应用程序的nedb数据存储中。

NodeJS通过stream复制文件非常缓慢

我正在用VMWare下的SSD在Node上复制文件,但性能非常低。 我运行的测量实际速度的基准如下: $ hdparm -tT /dev/sda /dev/sda: Timing cached reads: 12004 MB in 1.99 seconds = 6025.64 MB/sec Timing buffered disk reads: 1370 MB in 3.00 seconds = 456.29 MB/sec 但是,以下用于复制文件的节点代码非常慢,因此后续运行并不会使速度更快: var fs = require("fs"); fs.createReadStream("bigfile").pipe(fs.createWriteStream("tempbigfile")); 运行如下: $ seq 1 10000000 > bigfile $ ll bigfile -h -rw-rw-r– 1 mustafa mustafa 848M Jun 3 03:30 […]

使用socket.ioparsingcookie

我试图正确地读取我的节点服务器上通过浏览器控制台localhost:3000上设置的cookie,如下所示: document.cookie = "tagname = test;secure"; document.cookie = "hello=1" 在我的节点服务器上,我使用sockets.io,当我得到一个连接请求,我可以访问一个属性,如下所示: socket.request.headers.cookie 这是一个string,我总是看到这样的: 'io=QhsIVwS0zIGd-OliAAAA' //what comes after io= is random. 我试着翻译它与各种模块,但他们似乎无法parsingstring。 这是我最近的尝试: var cookie = require('cookie'); io.sockets.on('connection', function(socket) { socket.on('addUser', function(){ var a = socket.request.headers.cookie; var b = cookie.parse(a); //does not translate console.log(b); }); } 我显然希望得到一个对象,包含浏览器上每个io.connect发送的所有cookie。 我一直试图解决它5个小时,我真的不知道我在这里做错了什么。

为什么这个node.js循环在112050迭代之后缓慢运行?

我正在玩node.js,我发现这个简单的程序运行得非常慢,我甚至没有等到3分钟后花了多长时间。 var fs = require ('fs') var s = fs.createWriteStream("test.txt"); for (i = 1; i <= 1000000; i++) s.write(i+"\n"); s.end() 我尝试了使用不同的值,发现1-112050需要3秒,1-112051需要一分钟。 这突然下降是奇怪的。 python中的相同程序,或等效的shell脚本“seq 1 112051”在合理的时间(0-2秒)内运行。 请注意,这个node.js应用运行得更快: var fs = require('fs') , s = [] for (var i = 1; i <= 1000000; i++) s.push(i.toString()) s.push('') fs.writeFile('UIDs.txt', s.join('\n'), 'utf8') 任何人都可以向我解释为什么node.js这样做,为什么dropoff是如此突然?