遍历文件夹,获取文件夹下和子文件夹下所有扩展名为.png类型的文件名
2条回答 默认 最新
- rednaxelafx 2009-03-02 01:22关注
方法非常多,其中一种是用标准库里的Find模块:
[code="ruby"]require 'find'def find_all_png(dir)
files = []
Find.find(dir) do |path|
if File.extname(path) =~ /.png/i && File.file?(path)
yield path if block_given?
files << path
end
end
files
end[/code]
用的时候用一个关联block来做处理,像是输出当前目录及子目录下的所有png文件路径:
[code="ruby"]find_all_png('.') {|path| puts path }[/code]
或者不提供关联block也行,这个函数会返回包含符合条件的文件路径的数组。如果是要文件名而不是路径名的话,那在得到path之后用File.basename(path)就能得到,像是:
[code="ruby"]find_all_png('.').map {|path| File.basename path }[/code]当然自己写递归函数来遍历文件夹也是可以的,只是标准库里有的东西一般就懒得重复写了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于温度改变石墨烯介电性能(关键词-介电常数)
- ¥150 HDMI分路器LT86102 的输出在890MHz频点处EMC超标8DB
- ¥15 druid(相关搜索:数据库|防火墙)
- ¥15 大一python作业
- ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
- ¥60 如何鉴定微信小程序数据被篡改过
- ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
- ¥20 C#上传XML格式数据
- ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
- ¥20 手机截图相片分辨率降低一半