我在JRuby
中使用SikuliX IDE
递归获取文件夹及其子文件夹的列表,并将其绝对路径(可能还包含点字符)存储在数组中。我尝试使用以下代码:
records = Dir.glob 'C:/_private/Files/**/*/'
我收到错误消息:
[错误]语法错误(无效的多字节字符(UTF-8))
预期输出:
C:/_private/Files/dir1
C:/_private/Files/dir1/subdir1
C:/_private/Files/dir1/subdir2
C:/_private/Files/dir2
C:/_private/Files/dir2/subdir1
C:/_private/Files/dir2/subdir2
答案 0 :(得分:2)
请检查产生预期结果的新东西-
records = Dir.glob('/E:/ISSUE_Folder/**/*.*')
records.each do |item|
puts File.dirname(item)
end
如您所见,它会转到每个文件夹和子文件夹
答案 1 :(得分:1)
我的rails应用程序具有 printf("Test %d/%d passed, match at position %d, value %c\n"
, left, right, pos, *ptr); //mod w/o issue
文件夹,并且具有文件和子文件夹的数量,因此仅在config
中获得文件夹,
我使用了awesome_print宝石下面提供的config
ap
我在> ap Dir.glob "#{Rails.root}/config/**/"
[
[0] "/home/ray/projects/example_app/config/",
[1] "/home/ray/projects/example_app/config/initializers/",
[2] "/home/ray/projects/example_app/config/locales/",
[3] "/home/ray/projects/example_app/config/environments/"
]
内有test
文件夹,也可以通过以下查询获得。
config/locales/
为了进一步搜索第三级层次结构的子文件夹,我将使用> ap Dir.glob "#{Rails.root}/config/**/**/"
[
[0] "/home/ray/projects/example_app/config/",
[1] "/home/ray/projects/example_app/config/initializers/",
[2] "/home/ray/projects/example_app/config/locales/",
[3] "/home/ray/projects/example_app/config/locales/test/",
[4] "/home/ray/projects/example_app/config/environments/"
]
更新:
对于 windows ,您可以尝试以下操作,
"#{Rails.root}/config/**/**/**/"
您可以通过添加第一层和第二层(在上面进行注释)子文件夹来进一步获得结果
答案 2 :(得分:1)
也许您的JRuby使用的红宝石小于或等于1.9
在Ruby 1.9中,文件中的标头需要指明编码格式。
在顶部添加此行
# encoding: UTF-8