首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检测Node.js中的硬链接

检测Node.js中的硬链接
EN

Stack Overflow用户
提问于 2015-08-05 12:08:20
回答 2查看 969关注 0票数 6

如何判断文件系统路径是否为Node.js的硬链接?函数fs.lstat提供了一个stats对象,当给定硬链接时,将分别为stats.isDirectory()stats.isFile()返回true。fs.lstat没有提供任何东西来说明普通filedirectory与链接的and或up之间的区别。

如果我对链接(ln)工作原理的理解是正确的,则链接文件指向磁盘上与原始文件相同的位置。这意味着原始文件和链接版本都是相同的,无法区分原始文件和链接文件。

我正在寻找的功能如下:

这是用于演示和通信目的的假设伪代码。

代码语言:javascript
复制
fs.writeFileSync('./file.txt', 'hello world')
fs.linkSync('./file.txt', './link.txt')
fs.isLinkSync('./file.txt') // => false
fs.isLinkSync('./link.txt') // => true
fs.linkChildrenSync('./file.txt') // => ['./link.txt']
fs.linkChildrenSync('./link.txt') // => []
fs.linkParentSync('./link.txt') // => './file.txt'
fs.linkParentSync('./file.txt') // => null
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-05 14:50:01

好的..。只是为了好玩。您可以选择通过某个目录中的inode查找文件。

从stat对象中获取inode ID后..

代码语言:javascript
复制
fs.stat('./okay.file', function(err, stats){
  var inodeID = stats.ino; // Double check that this is correct
});

然后,您可以遍历文件夹中的所有文件,并使用条件检查inode ID是否匹配。Get all files in a directory。如果没有,您可以假定没有链接(在当前目录中)。

但是,看起来我们不能通过inode id来搜索文件。请参阅:nodejs open nfs files by inode (or a the fastest way to reopen a file)

fs.lstat:https://nodejs.org/api/fs.html#fs_fs_lstat_path_callback

统计数据对象:https://nodejs.org/api/fs.html#fs_class_fs_stats

票数 4
EN

Stack Overflow用户

发布于 2015-08-05 12:19:17

抱歉,这是不可能的,你不能在原始文件和硬链接文件之间有所不同。它们在您的linux系统上是相同的,并且指向相同的inode。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31823283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档