Ruby/ファイル操作

Ruby/ファイル操作

ファイル操作に関してのまとめ。1.8.6ぐらいの時に書いたものもあるのでもしかしたら1.9系だと違う挙動かも

ファイル情報取得系

ファイルの存在を確認

ファイルhogeが存在すればtrue。FileTestクラスにはファイルの性質を調べる便利なメソッドが何個もある。

FileTest.exist?("hoge")

ディレクトリの存在を確認

ファイルの存在を確認同様にFileTest.exist?を使う

ファイルパスからファイル名部分を取得

Fileクラスのbasenameメソッドを使う。つまりパス記述に特化した文字列操作

Windows式 ¥を重ねてるのはエスケープのため

p File::basename("C:\\aaa\\hoge.gif") #=> hoge.gif

Unix式

p File::basename("/aaa/hoge.gif") #=> hoge.gif

URL式

p File::basename("http://aaa.co.jp/hoge.gif") #=> hoge.gif

ファイルの詳細情報取得

Ruby 2.0.0 で動作確認OK

s = File::stat("/a/b/c/hogehoge.txt")
p s.mtime
method class memo
mtime Time 最終更新時刻

ディレクトリ以下のファイルを列挙

Ruby 2.0.0 で動作確認OK

Dir.glob("D:/hoge/piyo/*").each do |f|
  p f
end

得られるfはフルパス表記のStringオブジェクト。 カレントを表す.(ドット)とか親ディレクトリを表す..(ドットドット)は含まれない

カレントディレクトリ以下のファイルを再帰的に列挙

Dir.glob("./**/*").each  do |f|
  next unless File.file?(f)
  puts f
end

ファイルそのものの操作系

ファイルをコピー

こうすると

FileUtils.copy("C:/hoge/piyo.txt", "C:/fuga")

C:/fuga/piyo.txtが出来上がる

ファイルを移動

ファイルパスを rename することでファイルの移動となる。

File.rename("/hoge/from.txt", "/piyo/to.txt")

ファイルの中身アクセス系

テキストファイルを開いて一行ずつ処理

File::open("hoge.txt") do |f|
  f.each do |a|
      p a
  end
end

バージョン

2012-04-19 新規

タグ

ruby/file_ope.txt · 最終更新: 2016-12-26 18:24 by ore