Java の File#getAbsolutePath で絶対パスを求めるような感じ。
Ruby では File.expand_path を使う。

サンプルコード。


#!/usr/bin/env ruby
 
paths = [
  '/home/hoge/a/b/c.txt',
  './a/b/c.txt',
  '/home/hoge/a/b',
  '/home/hoge/a/b/',
  './a/b/',
]
 
paths.each{|path|
  puts "#{path} => #{File.expand_path(path)}"
}

実行結果。
カレントディレクトリは絶対パス表記に変換される。末尾のスラッシュはなくなる。


/home/hoge/a/b/c.txt => /home/hoge/a/b/c.txt
./a/b/c.txt => /home/hoge/a/b/c.txt
/home/hoge/a/b => /home/hoge/a/b
/home/hoge/a/b/ => /home/hoge/a/b
./a/b/ => /home/hoge/a/b

Ruby 1.8.7 リファレンスマニュアルによるとこれ。

expand_path(path, default_dir = '.') -> String

path を絶対パスに展開した文字列を返します。 path が相対パスであれば default_dir を基準にします。

class File

プログラム用例 - 入出力 - ファイルパス には Java, Python, Ruby, Shell でのファイルパスの操作サンプルがざっくりまとまってて参考になる。

tags: ruby

Posted by NI-Lab. (@nilab)