Ruby Language
Operacje na plikach i we / wy
Szukaj…
Parametry
Flaga | Znaczenie |
---|---|
„r” | Tylko do odczytu, zaczyna się na początku pliku (tryb domyślny). |
„r +” | Odczyt i zapis, zaczyna się na początku pliku. |
„w” | Tylko do zapisu, obcina istniejący plik do zerowej długości lub tworzy nowy plik do zapisu. |
„w +” | Odczyt-zapis, obcina istniejący plik do zera lub tworzy nowy plik do odczytu i zapisu. |
"za" | Tylko do zapisu, zaczyna się na końcu pliku, jeśli plik istnieje, w przeciwnym razie tworzy nowy plik do zapisu. |
„a +” | Odczyt-zapis, zaczyna się na końcu pliku, jeśli plik istnieje, w przeciwnym razie tworzy nowy plik do odczytu i zapisu. |
"b" | Tryb pliku binarnego. Pomija konwersję EOL <-> CRLF w systemie Windows. I ustawia zewnętrzne kodowanie na ASCII-8BIT, chyba że zostanie to wyraźnie określone. (Ta flaga może pojawić się tylko w połączeniu z powyższymi flagami. Na przykład File.new("test.txt", "rb") otworzyłby test.txt w trybie read-only jako plik binary .) |
„t” | Tryb pliku tekstowego. (Ta flaga może pojawić się tylko w połączeniu z powyższymi flagami. Na przykład File.new("test.txt", "wt") otworzyłby test.txt w trybie write-only jako plik text .) |
Zapisywanie ciągu do pliku
Ciąg znaków można zapisać do pliku za pomocą instancji klasy File
.
file = File.new('tmp.txt', 'w')
file.write("NaNaNaNa\n")
file.write('Batman!\n')
file.close
Klasa File
oferuje także skrót dla new
i close
operacji metodą open
.
File.open('tmp.txt', 'w') do |f|
f.write("NaNaNaNa\n")
f.write('Batman!\n')
end
W przypadku prostych operacji zapisu ciąg można również zapisać bezpośrednio do pliku za pomocą File.write
. Pamiętaj, że spowoduje to zastąpienie pliku domyślnie.
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n')
Aby określić inny tryb w File.write
, przekaż go jako wartość klucza o nazwie mode
w skrócie jako inny parametr.
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n', { mode: 'a'})
Otwieranie i zamykanie pliku
Ręcznie otwórz i zamknij plik.
# 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
Automatycznie zamknij plik za pomocą bloku.
f = File.open("test.txt", "r") do |f|
# do something with file f
puts f.read # for example, read it
end
uzyskać jeden znak wejściowy
W przeciwieństwie do gets.chomp
nie będzie czekać na nową linię.
Pierwsza część pakietu stdlib musi być dołączona
require 'io/console'
Następnie można napisać metodę pomocniczą:
def get_char
input = STDIN.getch
control_c_code = "\u0003"
exit(1) if input == control_c_code
input
end
Ważne jest, aby wyjść, jeśli naciśnięty zostanie klawisz control+c
.
Czytanie ze 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
Czytanie z argumentów z 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow