Project1

标题: 如何检测游戏文件夹内的某个文件夹的所有文件呢? [打印本页]

作者: David_Exmachina    时间: 2018-1-26 17:01
标题: 如何检测游戏文件夹内的某个文件夹的所有文件呢?
比如在游戏文件夹中有一个文件夹叫“123”,
里面有3个文件,分别叫做“妨碍咱都渣渣!.txt”、
“我练功发自真心!.png”和“变可爱啦!梁非凡!.wav”
我该如何检测这些文件并返回其名称组成的数组(可以无顺序)?(文件数量未知的话)

个人认为的伪代码:
  1. a = 检测文件夹内所有文件("123")
  2. p a => [“妨碍咱都渣渣!.txt”, “我练功发自真心!.png”, “变可爱啦!梁非凡!.wav”]
复制代码

作者: mori13    时间: 2018-1-26 19:44
类似于https://rpg.blue/thread-82439-1-1.html
原贴例子是找gif的,乃可以自己设定。然后代码将文件名都放入了total_name里,然后你输出出来就行了
例子我改成了找Data里的rxdata文件了
  1. @old_dir = Dir.pwd
  2.     Dir.chdir("Data")
  3.     @total_name= []
  4.     for g in Dir["*"]
  5.       suf = g.split(/\./)
  6.       if suf[1].is_a?(String) and suf[1].downcase == "rxdata"
  7.         @total_gif.push(g)
  8.         Dir.mkdir(suf[0]) unless Dir["*"].include? suf[0]
  9.       end
  10.     end
  11.     Dir.chdir(@old_dir)
  12.     p @total_name
  13.    
复制代码

作者: 芯☆淡茹水    时间: 2018-1-26 21:44
本帖最后由 芯☆淡茹水 于 2018-1-26 21:57 编辑

#比如 Graphics/Pictures 文件夹里所有文件
all_files = Dir::entries("Graphics/Pictures")

#所有 png 文件
all_png_files = all_files.find_all{|name| name.split(".").pop == "png"}

#所有 txt 文件
all_txt_files = all_files.find_all{|name| name.split(".").pop == "txt"}

#其它以此类推。判断文件类型目前就只想到这一个方法,不知道会不会判错。

#也可以方便点写个函数
def Lookup_file(path, file_type)
  return Dir::entries(path).find_all{|name| name.split(".").pop == file_type}
end

#要查找就直接用写的函数,比如图片的:
Lookup_file("Graphics/Pictures", "png")

作者: RyanBern    时间: 2018-1-27 10:18
本帖最后由 RyanBern 于 2018-1-27 10:20 编辑

建议使用 Dir.glob,充分利用这些特性。
RUBY 代码复制
  1. # 逐个列出当前文件夹任意文件
  2. Dir.glob("*") do |f|
  3.   p f
  4. end
  5.  
  6. # 逐个列出当前文件夹的 .rxdata 文件
  7. Dir.glob("*.rxdata") do |f|
  8.   p f
  9. end
  10.  
  11. # 逐个列出 Data 文件夹以 Map 打头的文件
  12. Dir.glob("Data/Map*") do |f|
  13.   p f
  14. end

作者: David_Exmachina    时间: 2018-1-27 13:34
RyanBern 发表于 2018-1-27 10:18
建议使用 Dir.glob,充分利用这些特性。
# 逐个列出当前文件夹任意文件
Dir.glob("*") do |f|

问题解决,谢谢你的帮助!
没想到居然还有这个功能。
我觉得这个脚本很适合用来
制作音乐播放器或者是DLC的检测器。

作者: fux2    时间: 2018-1-29 12:16
  1. p Dir["Graphics/*.png"]
复制代码

即可




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1