回答:
以下をお探しですか?
File.open(yourfile, 'w') { |file| file.write("your text") }
yourfile
書き込むファイルの名前を保持する変数です。
f.write
例外が発生した場合、ファイル記述子は開いたままになるため、このソリューションはお勧めしません。
File.write('filename', 'content')
IO.write('filename', 'content')
あなたは短いバージョンを使うことができます:
File.write('/path/to/file', 'Some glorious content')
書き込まれた長さを返します。詳細とオプションについては、:: writeを参照してください。
ファイルに追加するには、ファイルが既に存在する場合は、次を使用します。
File.write('/path/to/file', 'Some glorious content', mode: 'a')
これは、ほとんどの場合に推奨されるアプローチです。
File.open(yourfile, 'w') { |file| file.write("your text") }
ブロックがに渡されるFile.open
と、ブロックが終了するとFileオブジェクトは自動的に閉じられます。
ブロックをFile.open
に渡さない場合は、ファイルが正しく閉じられ、コンテンツがファイルに書き込まれたことを確認する必要があります。
begin
file = File.open("/tmp/some_file", "w")
file.write("your text")
rescue IOError => e
#some error occur, dir not writable etc.
ensure
file.close unless file.nil?
end
あなたはそれをドキュメントで見つけることができます:
static VALUE rb_io_s_open(int argc, VALUE *argv, VALUE klass)
{
VALUE io = rb_class_new_instance(argc, argv, klass);
if (rb_block_given_p()) {
return rb_ensure(rb_yield, io, io_close, io);
}
return io;
}
File.open
blog.rubybestpractices.com/posts/rklemme/についての詳細は次のとおりです。公式ドキュメントにも記載されています
File.open("out.txt", '<OPTION>') {|f| f.write("write your stuff here") }
オプション<OPTION>
は次のとおりです。
r
-読み取り専用。ファイルが存在している必要があります。
w
-書き込み用に空のファイルを作成します。
a
-ファイルに追加します。ファイルが存在しない場合は作成されます。
r+
-読み取りと書き込みの両方を更新するためにファイルを開きます。ファイルが存在している必要があります。
w+
-読み取りと書き込みの両方に空のファイルを作成します。
a+
-読み取りと追加のためにファイルを開きます。ファイルが存在しない場合は作成されます。
あなたのケースでw
は、好ましいです。
例によって学ぶ私たちのために...
次のようにテキストをファイルに書き込みます。
IO.write('/tmp/msg.txt', 'hi')
ボーナス情報...
このように読み返してください
IO.read('/tmp/msg.txt')
頻繁に、クリップボードにファイルを読みたい***
Clipboard.copy IO.read('/tmp/msg.txt')
また、クリップボードの内容をファイルに書きたい場合もあります***
IO.write('/tmp/msg.txt', Clipboard.paste)
***クリップボードのgemがインストールされていると仮定します
IO.write
オプションに注意してください。Append with IO.writeは少し面倒です。
Errno::ENOENT: No such file or directory @ rb_sysopen
と、メッセージと、サイズが0バイトで作成されたファイルが表示される場合があります。