読み込みはこんな感じでした。
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:~$
コメント