file = File.open('fname.txt')
puts file.read
file.close
hoge
File.open 'fname.txt' do |file|
puts file.read
end
hoge
File.open 'fname.txt' do |file|
while line = file.gets
p line
end
end
"hoge\n" "fuga\n" "hey\n" "ho\n"
File.open 'fname.txt' do |file|
file.each_line do |line|
p line
end
end
"hoge\n" "fuga\n" "hey\n" "ho\n"
hoge fuga hey ho
File.open 'fname.txt' do |file|
file.each_byte do |line|
p line
end
end
104 111 103 101 10 102 117 103 97 10 104 101 121 10 104 111 10
hoge fuga hey ho
File.read('fname.txt')
"hoge\nfuga\nhey\nho\n"
File.open 'fname2.txt', 'w' do |f|
f.write 'Hello'
end
5
File.read('fname2.txt')
"Hello"
File.open 'foo', File::WRONLY | File::CREAT do |f|
# "puts¥n" と書き込み
f.puts 'puts'
# 改行文字(¥n)だけを書き込み
f.puts
# "print" と書き込み
f.print 'print'
# "007" と書き込み
f.printf "%03d", 7
# "a" と書き込み
f.putc 97
end
97
File.read('foo')
"puts\n\nprint007a"
■アクセス位置の操作
File.open 'fname.txt', 'a+' do |f|
f.puts '文字列を追記'
f.rewind
puts f.read
end
hoge fuga hey ho 文字列を追記
File.open 'fname.txt', 'a+' do |f|
f.puts '文字列を追記2回目'
#f.rewind
puts f.read
end
File.open 'fname.txt' do |f|
f.seek 10
f.seek -10, IO::SEEK_CUR
f.seek -10, IO::SEEK_END
end
0
File.open 'fname.txt' do |f|
f.pos = 30
p f.pos
end
30
30
File.open 'fname.txt' do |f|
f.pos = 30
p f.pos
p f.read
end
30 "を追記\n文字列を追記2回目\n"
"を追記\n文字列を追記2回目\n"
■エンコーディングの扱い
File.open 'utf16.txt' do |f|
f.set_encoding('UTF-8')
f.set_encoding('UTF-16LE', 'UTF-8')
f.set_encoding('UTF-16LE:UTF-8')
p f.read
end
"こんにちは\n"
"こんにちは\n"
Encoding.default_external
#<Encoding:UTF-8>
File.open 'fname.txt', 'r:euc-jp:utf-8' do |f|
puts f.external_encoding
puts f.internal_encoding
end
EUC-JP UTF-8