ファイルを開くときはFile.openと習った。しかし、一つのフォルダの中のファイルを一つずつ開きたいときはどうするの?
( ◠‿◠ )☛そんな時にDir.openが便利なんですよ
dir = Dir.open("rumia")
と記述することで、rumiaというフォルダを開くことができるのだ。
ではどんなときに使うか。
#! ruby Dir.open("rumia").each do |mo| puts mo
実行結果
. .. hoppe.txt onaka.txt futomomo.txt
こんな感じで、rumiaフォルダの中身をリストにしてくれる。
( ˘⊖˘) 。o(待てよ? 「..」って何だ?)
┗(☋` )┓三 |
( ◠‿◠ )☛分からん「.」というのは現在いるディレクトリを表す場所で 「..」は一つ上の階層のディレクトリを表します(南山まさかずさん、ありがとうございます)
▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂使うのかそれ
使わないので除外しちゃおう。
#! ruby Dir.open("rumia").each do |mo| next if mo =~ /^\.+$/ puts mo
実行結果
hoppe.txt onaka.txt futomomo.txt
正規表現で、.だけのファイルを表示しないことにした。正確にはファイルじゃない気がするがぼくにもよく分からない。
そんなわけでようやくそれらしいことをしよう。フォルダの中身をまるごとコピー。
#! ruby indir = "./rumia" outdir = "./me" Dir.open(indir).each do |me| next if me =~ /^\.+$/ fin = File.open("#{indir}/#{me}","rb") fout = File.open("#{outdir}/#{me}","wb") while line = fin.gets do fout.print line end fin.close fout.close end
rumiaフォルダのファイルが、丸ごとmeフォルダにコピーされたよ!!!これでルーミアちゃんもぼくの……