1. 概要
本項は、下記のサイトを参考にさせていただきました。
「class File (Ruby 2.5.0)」
「Ruby でファイルのタイムスタンプを調べる - Qiita」
「Ruby の FileTest.directory? だけでファイルかディレクトリかを判定してはダメ - Qiita」
「Rubyでファイルの書き込み・読み込みを行う方法 | UX MILK」
結局これは、次章のライブラリの項目で書くべきであったな・・・と。
整理するときがあったら、次章に書き直します。
2. File::Stat
C言語の stat 関数的なものと理解しています。
file = __FILE__
puts("#{__LINE__} file=[#{file}]")
stat = File::Stat.new(file)
puts("#{__LINE__} stat.size=[#{stat.size}]")
puts("#{__LINE__} stat.atime=[#{stat.atime}]")
puts("#{__LINE__} stat.mtime=[#{stat.mtime}]")
puts("#{__LINE__} stat.ctime=[#{stat.ctime}]")
上記のソースを実行すると下記の結果が得られます。
2 file=[/home/hogehoge/lang/ruby/file/stat.rb]
6 stat.size=[268]
7 stat.atime=[2025-06-23 13:38:21 +0900]
8 stat.mtime=[2025-06-23 13:38:21 +0900]
9 stat.ctime=[2025-06-23 13:38:21 +0900]
このソース 6行目以降を
p stat
で一気に出力しようとしたのですが。
コマンドラインから実行する分にはうまく実行できるのですが、ウェブ越しに実行しようとするとうまく出力できません。
3. ファイルかどうかを判定する
FileTest という組み込みライブラリが用意されています。
file = __FILE__
dir = File.dirname(File.expand_path(__FILE__))
puts("#{__LINE__} file=[#{file}] dir=[#{dir}]")
if FileTest.file?(file)
puts("#{__LINE__} [#{file}] はファイルです")
else
puts("#{__LINE__} [#{file}] はファイルではありません")
end
if FileTest.directory?(dir)
puts("#{__LINE__} [#{dir}] はディレクトリです")
else
puts("#{__LINE__} [#{dir}] はディレクトリではありません")
end
上記のソースを実行すると下記の結果が得られます。
4 file=[/home/hogehoge/lang/ruby/file/filetest.rb] dir=[/home/hogehoge/lang/ruby/file]
7 [/home/hogehoge/lang/ruby/file/filetest.rb] はファイルです
13 [/home/hogehoge/lang/ruby/file] はディレクトリです
4. テキストファイルの読み書き
require 'pathname'
string1 = "テキストファイルに\n"
string1 += "出力してみようと\n"
string1 += "思うのです\n"
filename = '/tmp/text01.txt'
Pathname.new(filename).open('w') do | file |
file.puts(string1)
end
string2 = String.new
Pathname.new(filename).open('r') do | file |
string2 = file.read
end
puts("[#{sprintf("%3d", __LINE__)}] string2=[#{string2}] ")
というソースを書いて実行すると下記の結果が得られます。
[ 19] string2=[テキストファイルに
出力してみようと
思うのです
]