16

これを行うことは可能ですか?

v='some text'
w='my' + Time.new.strftime("%m-%d-%Y").to_s + '.txt'
File.write(w,v) # will create file if it doesn't exist and recreates everytime 

インスタンスで File.open を実行する必要はありませんか? つまり、追加または作成して書き込むクラスメソッドだけですか? 理想的には ruby​​ 1.9.3 ソルン。

どうも

編集 1

これが私がドキュメントに基づいて試したことです。私は rdoc を見たことがありませんでしたが、他の例を見たことがあります。繰り返しますが、File.write を介して追加モードでファイルを開くことができるかどうかを尋ねているだけですか? どうも

irb(main):014:0> File.write('some-file.txt','here is some text',"a")
TypeError: can't convert String into Integer
    from (irb):14:in `write'
    from (irb):14
    from /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/irb:13:in `<main>'
irb(main):015:0>


irb(main):015:0> File.write('some-file.txt','here is some text',O_APPEND)
NameError: uninitialized constant O_APPEND
    from (irb):15
    from /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/irb:13:in `<main>'
irb(main):016:0>
4

4 に答える 4

12

いくつかのコメントが示唆しているように明確にするために、この動作をテストしました: IO.write("/tmp/testfile", "gagaga\n", mode: 'a')

それは、オフセットを計算する必要なくファイルに追加されます。Rubydoc は少し誤解を招きやすいです。これに関するバグがあります: https://bugs.ruby-lang.org/issues/11638

于 2015-10-30T09:48:45.290 に答える
4
File.open('my' + Time.new.strftime("%m-%d-%Y").to_s + '.txt', 'w') { |file| file.write("some text") }
于 2013-04-07T17:02:35.257 に答える
3

MRI には既にその方法があります (私はあなたのコードを文字通りコピーして貼り付けましたが、うまくいきました)、前回チェックしたとき、JRuby と Rubinius にはありませんでした。彼らは今、最新バージョンをインストールして見るのは気が進まないかもしれません。

http://rdoc.info/stdlib/core/IO.write

于 2013-04-07T17:11:32.997 に答える