Articles of file io

为OS X构build重复数据删除应用程序,我应该如何使用它作为文件的哈希值

我即将开始编程之旅,毫无疑问,它将以失败告终,并且/或者将我的鼠标通过我的Mac投掷出去,但这是一个有趣的问题。 我想要构build一个应用程序,该应用程序从基本目录开始扫描,然后循环遍历每个文件,如果find完全相同的重复文件,则将其删除,并在其位置上创build符号链接。 基本上穷人重复数据删除。 这实际上解决了一个真正的问题,因为我的Mac上有一堆重复的文件,我需要释放磁盘空间。 从我所读到的,这是战略: 通过recursion循环,并为每个文件生成一个散列。 散列需要非常独特。 这是第一个问题。 我应该使用什么散列? 我如何通过这个神奇的散列运行每个文件的整个二进制内容? 将每个文件散列和全path存储在键/值存储中。 我认为redis是一个非常好的select,因为它的速度。 遍历键/值存储区,查找重复的哈希值,删除重复的文件,创build符号链接,并将键/值存储区中的行标记为副本。 因此我的问题是: 我应该为每个文件使用什么散列algorithm? 这是怎么做的? 我在考虑使用node.js,因为节点通常在I / Otypes的东西上很快。 问题是节点吸取CPU密集的东西,所以哈希可能是瓶颈。 我还有什么其他的缺点?

使用Node.js在服务器端保存客户端数据

我一直在我的机器上尝试Node.js一段时间,我发现我的HTTP请求,XHR对象等知识相当缺乏。 所以在使用Node的时候,我一直在唠叨的主要是我似乎无法理解如何从客户端到服务器进行通信(除了简单的GET请求之外),反之亦然。 我最近的项目是一个简单的2人棋牌游戏(没有AI对手)。 我想要做的是能够将游戏板数据(JSONstring)发送到服务器,并将其保存到文件中。 我知道如何在客户端使用XHR对象获取文件内容。 我也了解如何使用Node的fs模块在服务器端创build和读取文件。 我不明白的是如何使用XHR对象将string发送到服务器,并有节点进程并将其保存到文件中。 用这种方式是否可以使用客户端代码调用服务器端代码? 试图通过一个XHR对象发送一个参数给服务器这样做的一个不正确的方法? 如果我所要求的话题太广泛,我也会对服务器和客户端通信这个话题的链接和书籍开放。

获取文件的新内容

node.js脚本调用最大的计算机代数系统,并将我的inputredirect到最大值的stdin 。 最大值将处理后的input写入临时文本文件,每个结果最大值返回一个新行。 节点可以监视写入文件的新数据,并以某种方式捕获这些数据(只有写入文件的新行,而不是整个文件)? 我已经尝试过fs.watchFile但无法捕获它所返回的实际数据。 谢谢。

创build一个洪stream的部分的缩略图

我试图在nodejs中使用torrent-stream库创build一个小应用程序来创buildvideo的缩略图,而不必实际下载整个文件。 我正在考虑只下载10个部分,其中我将提取一个图像,但是随后编码开始发挥作用:没有I-frame我不能从stream中提取图像,并且我无法知道在哪里我的框架是。 那么有关如何做到这一点的任何想法? 基本上我希望能创build10个小文件,然后我可以打开ffmpeg为了保存缩略图(这会给我10个缩略图,这是我想要的)。 我只是不知道如何处理stream。

Nodejs为每个响应发送多个文件

我想发送多个文件给用户每个响应。 例如,用户请求索引站点,并且该站点需要一些.png,css等等。 用户只需要获得所需的一切。 那是这个想法。 所以我的想法是这样可以实现: res.writeHead(200, {'Content-Type': 'text/html'}); var content = fs.readFileSync(applicationPath + "index.html"); res.write(content); content = fs.readFileSync(applicationPath + "images/logo.png"); res.write(content); content = fs.readFileSync(applicationPath + "index.css"); res.write(content); res.end(); 这有可能以任何方式? 还是有其他解决scheme? 感谢您的帮助和解答!

如何用Node.js处理大文件(超过1000个文件)的文件目录?

所以,我有一个相当大的文件目录,我需要在NodeJS应用程序中使用长时间运行的进程持续地进行处理。 目录正在不断处理和清空,但在任何给定时间处理1000个文件并不罕见 – 它们是gzip的CSV文件,所以我天真的解决scheme是抓取目录列表,迭代文件,打开每一个,parsing它们,然后继续,如下所示: files = fs.readdirSync 'directory' for filename in files file_path = path.resolve path.join 'directory', filename fd = fs.openSync file_path, 'r' buf = new Buffer fs.statSync(file_path).size fs.readSync fd, buf, 0, len, 0 fs.closeSync fd zlib.gunzip buf, (err, buf) => throw err if err content = buf.toString().split("\n") for line in content # parse, process […]

在node.js中写入stream上多次写入

我一直在研究node-dirty的代码,并注意到当向一个文件写入大量数据时,原始程序员select将写入分成几个组,并一次一个地写入组,都是作为一个循环的一部分同时发布的,而不用等待任何callback。 我有三个关于这个问题。 我有一个类似的问题要解决。 这在某种程度上更有效率吗? 我应该捆绑写作吗? 我应该如何select最佳的包装尺寸? 为什么不写一个组? 如果我注册到写入stream上的on('drain')事件,那么在所有同时发出的写入完成之后它只会被发射一次吗? 或之后? (我的猜测是前者) 如果发出on('error'),那么('drain')事件是否也会被发射? 还是相互排斥? 谢谢

如何通过设置正确的偏移量和位置来读取文件并使用手动缓冲写入Nodejs中的响应?

我想以64字节的时间间隔读取一个文件。 我也不想使用任何interanlly实现缓冲的function。 我想手动缓冲。 所以我开始使用fs.read()。 我努力尝试,但我真的不知道如何设置位置 ,告诉从哪里读取文件和缓冲区中的偏移量以开始写入。 所以我find了一些资源,并开始自己实施。 但是我所做的似乎是错误的。 请在下面find我的代码。 app.get('/manualBufferAnother', function (req, res, next) { var filePath = path.join(__dirname, 'Koala.jpg'); console.log("FilePath is: "+filePath); var fileName = path.basename(filePath); var mimeType = mime.lookup(filePath); var stat = fs.statSync(filePath); res.writeHead(200, { "Content-Type": mimeType, "Content-Disposition" : "attachment; filename=" + fileName, 'connection': 'keep-alive', "Content-Length": stat.size, "Transfer-Encoding": "chunked" }); fs.open(filePath, 'r', function(err, […]

在Node.js中将数据写入文本文件

目前,我有以下代码块: net = require('net'); var clients = []; net.createServer(function(s) { clients.push(s); s.on('data', function (data) { clients.forEach(function(c) { c.write(data); }); process.stdout.write(data);//write data to command window }); s.on('end', function() { process.stdout.write("lost connection"); }); }).listen(9876); 这是用来设置我的Windows计算机作为服务器,并从我的Linux计算机接收数据。 目前正在将数据写入命令窗口。 我想将数据写入一个文本文件到特定的位置,我该怎么做?

如何查找文件是否在Node.js的目录中?

给定两个绝对path或相对pathA和B ,我想知道B是否在目录A “内部” – 不仅仅在目录本身中,而且可能在子目录中。 我想这样做没有可能庞大的fs.readdir调用数量。 例如,如果A是/而B是/foo/bar/baz , B应该在A之内是非常明显A 。 recursionreaddir方法将是非常低效的。 一个明显的想法是将两个path转换为绝对path,然后检查B的绝对path的stringforms是否以A的stringforms开始。 但是,有两个问题: 你如何将相对path转换为绝对path? 什么是符号链接等? 我将接受调用Linux实用程序(除了rm -rf … 技术上可以用来解决问题)或第三方Node库的答案。