Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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_Windows_Filesystems_Ntfs - Fatal编程技术网

如何在Ruby中确定路径或文件的文件系统?

如何在Ruby中确定路径或文件的文件系统?,ruby,windows,filesystems,ntfs,Ruby,Windows,Filesystems,Ntfs,我需要在Windows上创建安全的文件名(支持外语字符)。有些开发环境是Mac,有些是Windows。我们的自动化测试在Windows机器上运行,应用程序安装在Windows机器上。文件系统对构成合法文件名的内容强加了自己的规则(特别是像“和路径分隔符在NTFS上是非法的”这样的字符) 我想编写一些测试来实际测试文件系统本身。我尽量不模拟这些测试,因为这样我就不会在实际系统中真正测试任何东西,而只是验证代码是否处理模拟的异常。这些测试至少需要在Mac上运行(如果有Mac时跳过测试也可以),但我还

我需要在Windows上创建安全的文件名(支持外语字符)。有些开发环境是Mac,有些是Windows。我们的自动化测试在Windows机器上运行,应用程序安装在Windows机器上。文件系统对构成合法文件名的内容强加了自己的规则(特别是像“和路径分隔符在NTFS上是非法的”这样的字符)


我想编写一些测试来实际测试文件系统本身。我尽量不模拟这些测试,因为这样我就不会在实际系统中真正测试任何东西,而只是验证代码是否处理模拟的异常。这些测试至少需要在Mac上运行(如果有Mac时跳过测试也可以),但我还想知道测试运行在哪种类型的文件系统上。NTFS与Fat32不同。注意:我不是要求实现安全文件名方法,我已经有了。我是问Ruby中是否有任何方法可以确定我当前所在的文件系统,以便进行测试。多个搜索和文档对于File,FileUtils、Dir甚至ENV都没有显示任何内容。

您可以尝试
sys filesystem
gem:

这是一个获取数据的接口 “df”上的文件系统信息 Unix,但也适用于Windows


我知道File.join将为您提供环境分隔符,但它似乎无法验证输入:>File.join(“asdf”、“fdas”、“&^*SDFIU”、“asdf.jpg”)=>“asdf/fdas/&^*SDFIU/asdf.jpg”感谢您提供的信息,但似乎对我不起作用。Mac:
ruby-1.9.2-p0>Sys::Filesystem.stat('.')。base\u type=>nil ruby-1.9.2-p0>Sys::Filesystem.stat('/')。base_type=>nil
我在“构建本机扩展”时遇到编译器错误"对于Win7 Ultimate上的gem。对不起,没有任何mac。关于windows,您安装了吗?是的,我刚刚安装了ruby installer devkit,它似乎安装正确,但在安装gem时仍然存在编译器错误。这可能是一个毫无意义的问题,因为我们可能不会进行这种安装过程ess适用于所有windows测试机,仅此一件事。无论如何,谢谢。我将继续标记此BA,即使它在我的环境中不起作用,我认为这是我的问题。假设它适用于某些人,这就是我要求的解决方案,谢谢。
irb(main):001:0> require 'sys/filesystem'
=> true
irb(main):006:0> Sys::Filesystem.stat("D:\\").base_type
=> "NTFS"