0

コードで明示的に開いたファイルを閉じることがどれほど必要かを考えるためのちょっとした食べ物です。私はCおよびC++でのプログラミングのバックグラウンドから来て、Rubyをナビゲートし始めました。フィードバックをよろしくお願いします。

from_file, to_file = ARGV
script = $0

puts "Copying from #{from_file} to #{to_file}"
File.open(to_file, 'w').write(File.open(from_file).read())

puts "Alright, all done."
4

4 に答える 4

6

withPythonのステートメントのようなものを使用していない限り、ファイルを閉じないことは常に悪い習慣です。

スクリプト言語は通常、終了時に開いているファイルを閉じますが、ファイルの処理が完了したらすぐに、特にファイルへの書き込み時に、ファイルを閉じる方がクリーンです。

どうやらRubyはPythonに似たものを持っているようですwith

File.open(from_file, 'r') do |f_in|
    File.open(to_file, 'w') do |f_out|
        f_out.write(f_in.read)
    end
end

関連するドキュメント: http: //ruby-doc.org/core-1.9.3/File.html#method-c-open

于 2012-05-10T06:39:39.220 に答える
2

これが短いバージョンです:

File.write to_file, File.read(from_file)
于 2012-05-10T12:43:29.407 に答える
1

このコード(Matheus Moreira)は、ファイルを自動的に閉じます。

File.write to_file, File.read(from_file)

このコードでファイルを閉じる方法はありません。

File.open(to_file, 'w').write(File.open(from_file).read())

私も自動的に閉じると思います。

于 2012-05-10T15:15:43.173 に答える
0

これは良い答えですが、出力ファイルを外側のブロックに配置して<<:を使用する方が「ルビー」です。

File.open(to_file, 'w') do |f_out|
  f_out << File.open(from_file){|f| f.read}
end

読むときに「r」が必要ないことに注意してください。

于 2012-05-10T09:52:56.193 に答える