Rubyでファイル名を操作する方法を現役エンジニアが解説【初心者向け】
初心者向けにRubyでファイル名を操作する方法について現役エンジニアが解説しています。RubyのFILEクラスのメソッドを使うとファイル名やフォルダ名など取得することが出来ます。その他にも絶対パスや拡張子なども取得することが出来ます。ディレクトリやファイルを操作できる機能があれば便利なCGIなどが作成出来ます。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Rubyでファイル名を操作する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプ、Ruby講座の内容をもとに紹介しています。
今回は、Rubyに関する内容だね!
どういう内容でしょうか?
Rubyでファイル名を操作する方法について詳しく説明していくね!
お願いします!
ファイル名を取得する方法
ファイル名を取得するには、Fileクラスのbasenameメソッドを使います。
引数にファイルへのパスを指定すると、ファイル名だけを返してくれます。
ファイル名を変更するにはFileクラスのrenameメソッドを使います。引数に、変更前のファイル名(パス)と、変更後のファイル名(パス)を指定すると、ファイル名が変更されます。
他にもFileUtilsモジュールのmvやmoveでも変更できます。引数はFile.renameと同じです。
ファイル名に関するその他の操作方法
ファイル名に関するその他の操作をいくつか紹介します。
- File.extname:拡張子(.txt や .rb など) を取得できます。
- File.dirname:フォルダ部分(パス)を取得できます。
- File.split:各フォルダ名とファイル名を要素とした配列を取得できます。
- File.absolute_path:絶対パスを取得できます。
実際に書いてみよう
今回は事前に以下のようなフォルダとファイルを作成しておきました。
parent
-child
–taro.txt
bash $ mkdir -p parent/child $ touch parent/child/taro.txt $ cd parent $ pwd /Users/hoge/parent
ファイル名を取得する方法
ますはFile.basenameでファイル名を取得します。
フォルダ名が除外されたtaro.txtを取得できました。
irb(main):001:0> File.basename("child/taro.txt") => "taro.txt"
ファイル名を変更する方法
次にFile.renameとFileUtils.mvでファイル名を変更してみます。ファイル名が変更されているかどうかは、File.exist?メソッドで確認できます。
taro.txt から hanako.txtに、続けてhanako.txtからkenji.rbに変更できています。
# File irb(main):002:0> File.rename("child/taro.txt", "child/hanako.txt") => 0 irb(main):003:0> File.exist?("child/taro.txt") => false irb(main):004:0> File.exist?("child/hanako.txt") => true # FileUtils irb(main):005:0> FileUtils.mv("child/hanako.txt", "child/kenji.rb") => 0 irb(main):006:0> File.exist?("child/hanako.txt") => false irb(main):007:0> File.exist?("child/kenji.rb") => true
ファイル名に関するその他の操作方法
最後にファイル名に関するいくつかの操作を見てみます。
# 拡張子の取得 irb(main):008:0> File.extname("child/kenji.rb") => ".rb" # フォルダ名の取得 irb(main):009:0> File.dirname("child/kenji.rb") => "child" # パスに関する配列の取得 irb(main):010:0> File.split("child/kenji.rb") => ["child", "kenji.rb"] # 絶対パスの取得 irb(main):011:0> File.absolute_path("child/kenji.rb") => "/Users/hoge/parent/child/kenji.rb"
執筆してくれたメンター
メンター稲員さん
フリーランスエンジニア。 経験言語:Ruby、Rails、Python、C/C++、Java、Perl、HTML/CSS3、JavaScript、CoffeeScript,Node.js。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でも、Ruby on Railsを使ったプログラミングを習得できる、オンラインブートキャンプを開催しています。
また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。