从JRuby中的给定文件夹获取子文件夹列表

时间:2018-12-18 12:50:10

标签: ruby jruby sikuli sikuli-ide

我在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

3 个答案:

答案 0 :(得分:2)

请检查产生预期结果的新东西-

 records = Dir.glob('/E:/ISSUE_Folder/**/*.*')

 records.each do |item|
   puts File.dirname(item)
 end

enter image description here

如您所见,它会转到每个文件夹和子文件夹

答案 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