Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何检查两个路径是否指向同一文件夹位置?_Ruby_Path_Logstash_Directory - Fatal编程技术网

Ruby 如何检查两个路径是否指向同一文件夹位置?

Ruby 如何检查两个路径是否指向同一文件夹位置?,ruby,path,logstash,directory,Ruby,Path,Logstash,Directory,我有两个文件夹路径作为字符串。如何检查两个路径是否指向同一文件夹位置。我不想比较字符串,因为它不是正确的方式。我尝试了文件。相同?但它返回false,因为它似乎期望两个文件路径而不是文件夹路径作为绘图。供您参考,我想在Logstash的Ruby filter插件中使用此代码 File.realpath(folder_path) == File.realpath(other_folder_path) 此方法返回实际文件系统中不包含符号链接或点的绝对路径名字符串。 与File.realdirpa

我有两个文件夹路径作为字符串。如何检查两个路径是否指向同一文件夹位置。我不想比较字符串,因为它不是正确的方式。我尝试了
文件。相同?
但它返回false,因为它似乎期望两个文件路径而不是文件夹路径作为绘图。供您参考,我想在Logstash的Ruby filter插件中使用此代码

 File.realpath(folder_path) == File.realpath(other_folder_path)
此方法返回实际文件系统中不包含符号链接或点的绝对路径名字符串。 与
File.realdirpath
不同,调用此方法时,路径名的所有组件都必须存在

此方法返回实际文件系统中不包含符号链接或点的绝对路径名字符串。
File.realdirpath
不同,调用此方法时,路径名的所有组件都必须存在。

如果字符串提供精确和正确的位置,则在比较字符串时我看不到任何不正确的地方。如果
File.idential?
不起作用,并且
Dir
没有提供类似的方法,我只需要将路径转换为
File.realdirpath()
并进行比较

File.realdirpath("first/path/") == File.realdirpath("second/path/")
它遵循符号链接

如果您使用的是类Unix系统,并且确实不信任字符串比较,那么可以比较inode编号

File.stat(File.realdirpath("first/path/")).ino == File.stat(File.realdirpath("second/path/")).ino
已编辑
没有注意到你关于在Windows上的评论。我不知道
文件::Stat在那里是如何工作的,但它应该是可用的,并且使用它提供的信息可能比字符串比较好。

如果字符串提供了精确和正确的位置,我看不出在比较字符串时有任何不当之处。如果
File.idential?
不起作用,并且
Dir
没有提供类似的方法,我只需要将路径转换为
File.realdirpath()
并进行比较

File.realdirpath("first/path/") == File.realdirpath("second/path/")
它遵循符号链接

如果您使用的是类Unix系统,并且确实不信任字符串比较,那么可以比较inode编号

File.stat(File.realdirpath("first/path/")).ino == File.stat(File.realdirpath("second/path/")).ino
已编辑
没有注意到你关于在Windows上的评论。我不知道
File::Stat
在那里是如何工作的,但它应该是可用的,并且使用它提供的信息可能比字符串比较更好。

为了澄清这个问题,我们可以看一个例子吗?你在比较绝对路径和相对路径吗?您是否将相同的路径与不同的表示进行比较,例如
/path/to/file
路径/to/file
?是否将带有符号链接的文件与同一文件进行比较?所有这些?还有什么?我比较了两个文件夹位置,即完整路径、无相对路径和无符号链接。例如,c:\My\文件夹和c:\My\文件夹。如果我在做了一个downcase之后比较它,它可能适合Windows。但同样的代码在Linux中也不适用,因为Linux中的路径区分大小写,比较的两个路径实际上可能是两个不同的路径,如/My/folder和/My/folder。为了澄清这个问题,我们可以看一个例子吗?你在比较绝对路径和相对路径吗?您是否将相同的路径与不同的表示进行比较,例如
/path/to/file
路径/to/file
?是否将带有符号链接的文件与同一文件进行比较?所有这些?还有什么?我比较了两个文件夹位置,即完整路径、无相对路径和无符号链接。例如,c:\My\文件夹和c:\My\文件夹。如果我在做了一个downcase之后比较它,它可能适合Windows。但同样的代码在Linux中也不适用,因为Linux中的路径区分大小写,比较的两个路径实际上可能是两个不同的路径,如/My/folder和/My/folder。谢谢!。我测试了
File.realdirpath()
,它也可以在Windows上正常工作。字符串比较的一个问题是,一个路径可能有尾随“/”而另一个没有。@Thayne这就是为什么应该首先处理路径
File.realdirpath(“/bin/”==File.realdirpath(“/bin”)
返回
true
;您只需要比较正确的字符串即可。谢谢!。我测试了
File.realdirpath()
,它也可以在Windows上正常工作。字符串比较的一个问题是,一个路径可能有尾随“/”而另一个没有。@Thayne这就是为什么应该首先处理路径
File.realdirpath(“/bin/”==File.realdirpath(“/bin”)
返回
true
;您只需要比较正确的字符串。谢谢,非常感谢谢谢,非常感谢