2

我使用JRubyinSikuliX IDE递归地获取文件夹及其子文件夹的列表,并将其绝对路径(也可能包含虚线字符)存储在数组中。我尝试使用以下代码:

records = Dir.glob 'C:/_private/Files/**/*/'

我收到错误消息:

[错误] SyntaxError ( 无效的多字节字符 (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
4

3 回答 3

3

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

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

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

在此处输入图像描述

如您所见,它会进入每个文件夹和子文件夹

于 2019-01-07T11:37:51.617 回答
1

我的 rails 应用程序有config文件夹并且它有许多文件和子文件夹,所以只获取文件夹config

我使用ap了下面由awesome_print gem提供的

> 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/"
]

为了进一步搜索第三级层次结构的子文件夹,我将使用"#{Rails.root}/config/**/**/**/"

更新:

您可以尝试以下 for windows

irb(main):022:0> Dir.glob("D:/sd/*/")  # first hierarchy 
=> ["D:/sd/df/", "D:/sd/dff/"]   

irb(main):023:0> Dir.glob("D:/sd/*")
=> ["D:/sd/351px-Nvidia_logo.png", "D:/sd/df", "D:/sd/dff"]

irb(main):024:0> Dir.glob("D:/sd/*/*/") # second hierarchy
=> ["D:/sd/dff/ty/"]

irb(main):025:0> Dir.glob("D:/sd/*/*")
=> ["D:/sd/df/351px-Nvidia_logo2.png", "D:/sd/dff/ty"]

您可以通过添加第一个和第二个层次结构(在上面注释)子文件夹来进一步获得结果

于 2019-01-08T08:32:18.373 回答
1

也许你的 JRuby 使用小于或等于 ruby​​ 1.9

在 Ruby 1.9 中,文件中的标头需要指明编码格式。

在顶部添加这一行

# encoding: UTF-8

于 2019-01-09T06:58:35.647 回答