Ruby Language
Операции с файлами и ввода-выводами
Поиск…
параметры
| Флаг | Имея в виду |
|---|---|
| "р" | Только для чтения, начинается с начала файла (режим по умолчанию). |
| «Г +» | Чтение-запись начинается с начала файла. |
| «Ж» | Write-only, обрезает существующий файл до нулевой длины или создает новый файл для записи. |
| «Ш +» | Чтение-запись, усечение существующего файла до нулевой длины или создание нового файла для чтения и записи. |
| «А» | Write-only, начинается в конце файла, если файл существует, в противном случае создается новый файл для записи. |
| «А +» | Чтение-запись начинается с конца файла, если файл существует, в противном случае создается новый файл для чтения и записи. |
| «Б» | Режим двоичного файла. Подавляет EOL <-> преобразование CRLF в Windows. И устанавливает внешнее кодирование в ASCII-8BIT, если явно не указано. (Этот флаг может отображаться только вместе с указанными выше флагами. Например, File.new("test.txt", "rb") откроет test.txt в режиме read-only чтения в виде binary файла.) |
| «Т» | Режим текстового файла. (Этот флаг может отображаться только вместе с указанными выше флагами. Например, File.new("test.txt", "wt") откроет test.txt write-only режиме write-only как text файл.) |
Запись строки в файл
Строку можно записать в файл с экземпляром класса File .
file = File.new('tmp.txt', 'w')
file.write("NaNaNaNa\n")
file.write('Batman!\n')
file.close
Класс File также предлагает сокращение для new и close операций с open методом.
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 , передайте его как значение ключа, называемого 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 .
Чтение из 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