読み込みはこんな感じでした。
takk@deb9:~$ cat read.rb
f=open("in.txt")
print f.gets
f.close()
takk@deb9:~$ ruby read.rb
HELLO
takk@deb9:~$
書き込みは読み込みの反対なのだから、もしかしてputs使うだけでは? と思い、やってみるとエラーになります。
takk@deb9:~$ cat write.rb
f=open("out.txt")
f.puts("HELLO")
f.close()
takk@deb9:~$ ruby write.rb
write-ng.rb:2:in `write': not opened for writing (IOError)
from write-ng.rb:2:in `puts'
from write-ng.rb:2:in `<main>'
takk@deb9:~$
読み込みの時は省略していましたが、書き込みモードを指定する必要があります。第2引数に”w”を指定します。
takk@deb9:~$ cat write.rb
f=open("out.txt","w")
f.puts("AAA")
f.close()
takk@deb9:~$
実行してみます。
takk@deb9:~$ ruby write.rb takk@deb9:~$ cat out.txt AAA takk@deb9:~$
out.txtが新規作成されて、内容が書き込まれているようです。
openはFile.openでもよいです。
takk@deb9:~$ cat write.rb
f=File.open("out.txt","w")
f.puts("BBB")
f.close()
takk@deb9:~$ ruby write.rb
takk@deb9:~$ cat out.txt
BBB
takk@deb9:~$
openを使わずに一発で全行書き込むにはFile.writeを使います。
takk@deb9:~$ cat write-all.rb
File.write("out.txt","HELLO\nHELLO\n")
takk@deb9:~$ ruby write-all.rb
takk@deb9:~$ cat out.txt
HELLO
HELLO
takk@deb9:~$
配列の内容を書き込む場合は、ちょっと一工夫いりそうです。
takk@deb9:~$ cat write-all.rb
arr = %w(aaa bbb ccc ddd eee)
arr.push("")
File.write("out.txt",arr.join("\n"))
takk@deb9:~$ ruby write-all.rb
takk@deb9:~$ cat out.txt
aaa
bbb
ccc
ddd
eee
takk@deb9:~$


コメント