Ruby Language
ファイル操作とI / O操作
サーチ…
パラメーター
| 旗 | 意味 |
|---|---|
| "r" | 読み取り専用。ファイルの先頭から開始します(デフォルトモード)。 |
| "r +" | 読み書きは、ファイルの先頭から始まります。 |
| "w" | 書き込み専用で、既存のファイルを長さゼロに切り捨てるか、書き込み用の新しいファイルを作成します。 |
| "w +" | 読み書き可能、既存のファイルをゼロ長に切り捨てるか、読み書き用の新しいファイルを作成します。 |
| "a" | 書き込み専用。ファイルが存在する場合はファイルの最後から開始し、それ以外の場合は書き込み用の新しいファイルを作成します。 |
| "a +" | 読み書き可能であり、ファイルが存在する場合はファイルの最後から開始し、それ以外の場合は読み書きのために新しいファイルを作成します。 |
| "b" | バイナリファイルモード。 Windows上でEOL < - > CRLF変換を抑止します。明示的に指定されていない限り、外部エンコーディングをASCII-8BITに設定します。たとえば、 File.new("test.txt", "rb")は、 test.txtをread-onlyモードでbinaryファイルとして開きます。)このフラグは、上記のフラグと組み合わせてのみ表示されます。 |
| "t" | テキストファイルモード。たとえば、 File.new("test.txt", "wt")は、 write-onlyモードでtest.txtをtextファイルとして開きます。)このフラグは、上記のフラグと組み合わせてのみ表示されます。 |
文字列をファイルに書き込む
文字列は、 Fileクラスのインスタンスを持つファイルに書き込むことができます。
file = File.new('tmp.txt', 'w')
file.write("NaNaNaNa\n")
file.write('Batman!\n')
file.close
Fileクラスは、 openメソッドでのnew操作とclose操作の省略形も提供します。
File.open('tmp.txt', 'w') do |f|
f.write("NaNaNaNa\n")
f.write('Batman!\n')
end
単純な書き込み操作では、文字列をFile.write直接ファイルに書き込むこともできます。 これはデフォルトでファイルを上書きすることに注意してください。
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n')
File.writeで別のモードを指定するには、別のパラメータとしてhashのmodeというキーの値として渡します。
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n', { mode: 'a'})
ファイルのオープンとクローズ
手動でファイルを開いたり閉じたりします。
# Using new method
f = File.new("test.txt", "r") # reading
f = File.new("test.txt", "w") # writing
f = File.new("test.txt", "a") # appending
# Using open method
f = open("test.txt", "r")
# Remember to close files
f.close
ブロックを使用してファイルを自動的に閉じます。
f = File.open("test.txt", "r") do |f|
# do something with file f
puts f.read # for example, read it
end
入力の単一の文字を取得する
gets.chompとは異なり、これは改行を待つことはありません。
stdlibの最初の部分を含める必要があります
require 'io/console'
次にヘルパーメソッドを書くことができます:
def get_char
input = STDIN.getch
control_c_code = "\u0003"
exit(1) if input == control_c_code
input
end
control+cを押すと終了するcontrol+c重要です。
STDINから読む
# Get two numbers from STDIN, separated by a newline, and output the result
number1 = gets
number2 = gets
puts number1.to_i + number2.to_i
## run with: $ ruby a_plus_b.rb
## or: $ echo -e "1\n2" | ruby a_plus_b.rb
ARGVで議論を読む
number1 = ARGV[0]
number2 = ARGV[1]
puts number1.to_i + number2.to_i
## run with: $ ruby a_plus_b.rb 1 2
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow