Find の代替

RubyMotion では、ライブラリが読み込めないので、Find が使えない。ということで、その代わりの方法のメモ。もっと簡単な方法が見つかれば、アップデートするつもり。

Ruby では、

require 'find'

Find.find(dir) do | path |

# path の処理

end

で、Find を読み込んで、ディレクトリの中のサブディレクトリを含むすべてのパスを取り出せた。

RubyMotion でその代わりになるのを探したけど、よくわからないので、とりあえずの代替方法。ただし、Find.find では、dir がファイルパスであっても問題なく処理できるけど、この方法は、directory でないとエラーが出る。

enm = NSFileManager.defaultManager.enumeratorAtPath(dir)

while (fn = enm.nextObject)

# fn の処理

# fn は、dir の中身で相対パスなので、パスが欲しいときは

# path = "#{dir}/#{fn}"

# のように処理する。もしくは、

# path = dir.stringByAppendingPathComponent(fn)

# でも同じになるはず。

end