Получить список подпапок из заданной папки в JRuby - PullRequest
0 голосов
/ 18 декабря 2018

Я использую JRuby в SikuliX 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

Ответы [ 3 ]

0 голосов
/ 08 января 2019

В моем приложении 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/**/**/**/"

Обновление:

Вы можете попробовать следующее: 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"]

Youдалее можно получить результат, добавив подпапки первой и второй иерархии (см. выше)

0 голосов
/ 09 января 2019

Возможно, ваш JRuby использует значение, меньшее или равное ruby ​​1.9

В Ruby 1.9 в заголовке вашего файла должен указываться формат кодировки.

Добавьте эту строку вверху

# encoding: UTF-8

0 голосов
/ 07 января 2019

пожалуйста, проверьте новый материал, который дает ожидаемый результат -

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

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

enter image description here

Как вы видите, он идет в каждую папку и подпапку

...