为什么Ruby似乎随机访问目录中的文件?

这是设计的吗?

这是代码

class FileRenamer
    def RenameFiles(folder_path)    
        files = Dir.glob(folder_path + "/*")
    end
end

puts "Renaming files..."

renamer = FileRenamer.new()
files = renamer.RenameFiles("/home/papuccino1/Desktop/Test")
puts files

puts "Renaming complete."

它似乎是取文件随机顺序,而不是它们在Nautilus中显示.

这是设计的吗?我只是好奇.

解决方法

每次在特定操作系统上的顺序应该相同,但是在操作系统中它们是不同的.

在不同的操作系统中,不能依赖行为或Dir.glob.不确定这是否是设计的,而是文件系统的人工制品.

在Windows和Linux上,结果按层次结构排序,然后按字母顺序排序;在Mac OS X上,结果按字母顺序排序.

您可以通过对结果调用sort来减轻效果,例如:

files = Dir.glob("./*").sort

或者如果您希望它不区分大小写,或许:

files = Dir.glob("./*").sort {|a,b| a.upcase <=> b.upcase}

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...