私が歌川です

@utgwkk が書いている

Ruby忘録 ディレクトリ(フォルダ)を扱う

ファイルを開くときは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(待てよ? 「..」って何だ?)

Google ┗(☋` )┓三

( ◠‿◠ )☛分からん「.」というのは現在いるディレクトリを表す場所で 「..」は一つ上の階層のディレクトリを表します(南山まさかずさん、ありがとうございます)

▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂使うのかそれ

使わないので除外しちゃおう。

#! 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フォルダにコピーされたよ!!!これでルーミアちゃんもぼくの……