Tag: 文件系统

primefaces读写文件。 如何在某个位置设置EOF?

我正在构build一个nodejs脚本。 脚本stream程如下: 用r +标志打开文件。 然后读取打开的文件内容(与fs.read)作为JSON。 运行用户callback以允许用户操纵json(文件仍然打开) 将新对象写入文件。 closures文件 我的问题是,我不知道如何确定文件的新大小,而不closures它。 所以,例如,如果我们先执行这个代码: ffs.lockAndManipulateJSON(__dirname + '/var/meta.json', function (json) { json.test = 'ABC'; json.foo = 'bar'; }); 而在未来的某个时候: ffs.lockAndManipulateJSON(__dirname + '/var/meta.json', function (json) { delete json.foo; }); 一个文件的内容如下: { "test": "ABC" } "foo": "bar" } 但我希望它是: { "test": "ABC" } 所以,我的问题是:如何在文件仍然打开时用nodejs设置新的文件大小?

从遍历文件夹function返回最终值

问题:为什么varvariables不会从walk()函数的外部返回值? 我该如何解决? Hypothosis:这是asynchronous的,console.log发生得太早了。 这将导致我如何使这是一个Promise (我使用节点4.1.1) var walk = function(dir, done) { var results = []; fs.readdir(dir, function(err, list) { if (err) return done(err); var i = 0; (function next() { var file = list[i++]; if (!file) return done(null, results); file = dir + '/' + file; fs.stat(file, function(err, stat) { if (stat && stat.isDirectory()) { […]

检测文件系统的mtime分辨率

如何从Node.js中找出系统的mtime分辨率? 为什么我问 在Node.js中, fs.watch有时会发出重复的change事件。 为了避免采取多余的行动,通常使用这样的代码(来自CoffeeScript的coffee实用程序): if event is 'change' fs.stat source, (err, stats) -> throw err if err return if stats.size is prevStats.size and stats.mtime.getTime() is prevStats.mtime.getTime() prevStats = stats … 这里的问题是:在OS X下,由于底层的HFS +文件系统, mtime的分辨率只有1秒。 也就是说, mtime.getTime()值的forms 1322068921000 所以每当两秒钟之内发生两次更改,就有可能第二次更改不会影响文件的mtime 。 由于stats.size检查,这只是一个问题,如果第二个更改没有影响文件的大小。 不过,这是一个问题。 一个可靠的解决scheme是通过间隔时间“去抖” change事件; 即在OS X下,当发生change时,我会等待1秒钟来执行操作(从而将所有可能具有相同mtime更改事件组合在一起)。 但是我希望在每个文件系统下尽可能缩短时间,而不是采用最大的共同点。

在node.js中,不能摆脱糟糕的符号链接

我有一个uglify函数,它创build一个文件lib-0.1.4-min.js ,然后将其链接到lib-production-min.js 。 0.1.4是当前版本。 由于这个目录的同步,有时lib-production-min.js是一个断开的链接。 当我运行编译函数时, fs.existsSync( "lib-production-min.js" )返回false。 当我稍后尝试创build符号链接时, node与file already exists 。 var version = 'lib-0.1.4-min.j'; var prod = 'lib-production-min.js'; // if production exists, get rid of it if( fs.existsSync(prod) ) fs.unlinkSync( prod ); // not exists – not deleted // link version to production fs.symlinkSync( version, prod ); // ERROR: file already […]

如何检查文件名string不是一个文件path

我在节点js上编写一个服务器应用程序。 操作系统是Linux。 我收到的文件名为一个纯string,所以可以被黑客入侵。 然后我连接文件名string和pathstring是这样的: filepath = '/home/www/upload/' + filename; 我想保护一个上传脚本,除了上传文件夹[或者它的子文件夹:可选],使用我的应用程序逻辑,而不是Linux写入任何地方。 我目前天真的解决scheme是阻止有..子string的文件名。 我不在乎是否有人有两个点的文件名。 当然,在安全方面,我必须向观众征求意见:任何事情都可能出错?

Node.js:检测一个用fs.createWriteStream()打开的文件,将被删除

说我有下面的节点程序,一台机器“Ping!”: var machine = require('fs').createWriteStream('machine.log', { flags : 'a', encoding : 'utf8', mode : 0644 }); setInterval(function () { var message = 'Ping!'; console.log(message); machine.write(message + '\n'); }, 1000); 每秒都会向控制台输出一条消息,并将其附加到一个日志文件(如果需要,它将在启动时创build)。 这一切都很好。 但现在,如果我在进程运行的时候删除了machine.log文件,它将继续愉快地嗡嗡作响,但由于文件不存在,写入将不再成功。 但看起来写入失败,意味着我需要明确检查这种情况。 我已经search了stream文档,但似乎无法find发生此类事情时发生的明显事件。 write()的返回值也没有用。 我怎样才能检测到我正在写的文件被删除,所以我可以尝试重新打开或重新创build文件? 这是一个CentOS盒子,如果这是相关的。

node.js写文件的目录?

如果我使用fs.writeFile,我会得到: Error: ENOENT, No such file or directory 我认为这是因为文件所在的目录不存在。 我应该先使用fs.mkdir还是还有其他的东西? 谢谢。

定期检查和清理服务器中的文件

我有以下与socket.io后端。 每当我们在新的浏览器选项卡中通过localhost:3000打开一个连接时,将在服务器的文件夹tmp/中创build一个以套接字标识命名的文件。 var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); server.listen(3000); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); io.sockets.on('connection', function(socket) { var fs = require('fs'); fs.writeFile("tmp/" + socket.id, "hello", function (err) { if (err) { return console.log(err) }; console.log('a file is saved!'); }); }); 因为套接字可能会断开连接,以后不活动或闲置。 […]

Nodejs检查givvenstring是否是有效的文件系统path而不实际检查文件系统

如何在nodejs中检查给定的string是否是有效的文件系统path而不实际检查文件系统。 我正在使用telegram bot nodejs api,发送文件时会检查文件是否存在。 但在第二次我使用从预览上传的telegram file id而不是实际的文件path发送文件,所以在这种情况下,我想检查string是否是一个实际的文件path,而不是一个文件id(exp: AgADBAADuqcxG-ysuwhqkRaOdVnJI0CZXhkABL1NBSyVlK3gduoAAgI ),然后检查是否存在文件,以提高性能并避免不必要的文件系统访问。

在Node.js中事务性地编写文件

我有一个Node.js应用程序,它将一些configuration数据存储在一个文件中。 如果更改某些设置,configuration文件将写入磁盘。 目前,我正在使用一个简单的fs.writeFile 。 现在我的问题是:当文件被写入时Node.js崩溃会发生什么? 有没有机会在磁盘上有损坏的文件? 或者Node.js保证文件是以primefaces方式写入的,以便旧版本或新版本有效? 如果没有,我怎么能实施这样的保证? 有没有这个模块?