Latest web development tutorials

Ruby złożyć wejście i wyjście

Ruby zapewnia zestaw metod związanych z I / O-realizowanych w kernel (jądro) modułu. Wszystkie I Metoda / O pochodzi od grupy IO.

IOzawiera wszystkie podejścia oparty na klasach, takichjak: odczyt, zapis, staje się stawia,readline, getc iprintf.

Ta sekcja wyjaśni wszystkie dostępne Ruby opartych funkcje I / O. Aby uzyskać więcej funkcji, zobacz klasę RubyIO.

stawiaoświadczenie

W poprzedniej części, przypisana do zmiennej, a następnie użyj wydruk oświadczeniestawia.

stawiazestawienie wskazuje, że program wyświetla wartości zapisanych w zmiennych. Spowoduje to dodanie nowego rzędu na końcu każdej linii.

Przykłady

#!/usr/bin/ruby

val1 = "This is variable one"
val2 = "This is variable two"
puts val1
puts val2

Uruchom wyjście Powyższy przykład to:

This is variable one
This is variable two

dostajeStatement

dostajerachunek mogą być wykorzystywane w celu uzyskania danych wprowadzanych przez użytkownika ze standardowego ekranu zwanego standardowego wejścia.

Przykłady

Poniższy kod demonstruje jak używać dostaje oświadczenie. Kod poprosi użytkownika, aby wprowadzić wartość, która będzie przechowywana w zmiennej val końcowy zostanie wydrukowany na standardowe wyjście.

#!/usr/bin/ruby

puts "Enter a value :"
val = gets
puts val

Uruchom wyjście Powyższy przykład to:

Enter a value :
This is entered value
This is entered value

oświadczenieputc

Istawiaróżne oświadczenia, oświadczeniestawiawyjście całego napisu na ekranie, podczas gdyputcOświadczenie może być stosowane do produkcji sekwencję znaków.

Przykłady

Wyjście z następującym kodem jedyną postacią H:

#!/usr/bin/ruby

str="Hello Ruby!"
putc str

Uruchom wyjście Powyższy przykład to:

H

sprawozdaniedruku

wydrukowanieoświadczenia iumieszczapodobne oświadczenie. Jedyną różnicą jest to, że po stwierdzeniestawiawyjście będzie przejść do następnej linii, a korzystanie z instrukcjiprint,kursor znajduje się na tej samej linii.

Przykłady

#!/usr/bin/ruby

print "Hello World"
print "Good Morning"

Uruchom wyjście Powyższy przykład to:

Hello WorldGood Morning

Otwieranie i zamykanie plików

Jak na razie, trzeba czytać i pisać do standardowego wejścia i wyjścia. Teraz będziemy patrzeć na to, jak rzeczywiste plików danych.

metodaFile.new

Można utworzyć obiektFilesłuży do odczytu metodęFile.new,pisać i czytać i pisać, czytać i pisać uprawnień w zależności od parametrów trybu. Wreszcie, można użyć metodyplik.closeaby zamknąć plik.

gramatyka

aFile = File.new("filename", "mode")
   # ... 处理文件
aFile.close

metodaFile.open

Można utworzyć nowy obiekt pliku za pomocą metodyFile.Open,a obiekt jest przypisany do pliku plik. Jednakże istnieje pewna różnica pomiędzyFile.OpeniFile.newmetod. Różnica jest metodaFile.openmoże być związany z blokiem, a nie metodyFile.new.

File.open("filename", "mode") do |aFile|
   # ... process the file
end

Poniższa tabela zawiera listę otwartych plików w różnych trybach:

模式描述
r只读模式。文件指针被放置在文件的开头。这是默认模式。
r+读写模式。文件指针被放置在文件的开头。
w只写模式。如果文件存在,则重写文件。如果文件不存在,则创建一个新文件用于写入。
w+读写模式。如果文件存在,则重写已存在的文件。如果文件不存在,则创建一个新文件用于读写。
a只写模式。如果文件存在,则文件指针被放置在文件的末尾。也就是说,文件是追加模式。如果文件不存在,则创建一个新文件用于写入。
a+读写模式。如果文件存在,则文件指针被放置在文件的末尾。也就是说,文件是追加模式。如果文件不存在,则创建一个新文件用于读写。

Odczyt i zapis plików

Sposób prosty I / O mogą być również stosowane do wszystkich obiektów plików. Więc dostaje czyta wiersz ze standardowegowejścia,aFile.gets aFile odczytuje linię z obiektu pliku.

Jednakże, I / O obiektu zapewnia dodatkowy zestaw metod dostępu, zapewnia nam wygodę.

metodasysread

Można użyć metodysysreadodczytać zawartość pliku. Gdy z wykorzystaniem metody sysread, można użyć dowolnego jeden tryb, aby otworzyć plik. Na przykład:

Poniżej znajduje się plik tekstowy wejściowy:

This is a simple text file for testing purpose.

Teraz spróbujmy odczytać pliku:

#!/usr/bin/ruby

aFile = File.new("input.txt", "r")
if aFile
   content = aFile.sysread(20)
   puts content
else
   puts "Unable to open file!"
end

To oświadczenie wejdzie 20 pierwszych znaków w pliku. Wskaźnik na plik zostanie umieszczony w pozycji w pliku 21 znaków.

metodasyswrite

Można użyć metodysyswritezapisu do pliku. Gdy z wykorzystaniem metody syswrite, trzeba otworzyć plik w trybie zapisu. Na przykład:

#!/usr/bin/ruby

aFile = File.new("input.txt", "r+")
if aFile
   aFile.syswrite("ABCDEF")
else
   puts "Unable to open file!"
end

Sprawozdania są napisane "ABCDEF" do pliku.

metodaeach_byte

Metoda ta należy do klasyFile.Each_byte Metoda iteracyjna jest w stanie ciąg znaków każda. Rozważmy następujące przykłady kodu:

#!/usr/bin/ruby

aFile = File.new("input.txt", "r+")
if aFile
   aFile.syswrite("ABCDEF")
   aFile.rewind
   aFile.each_byte {|ch| putc ch; putc ?. }
else
   puts "Unable to open file!"
end

Jedna po drugiej postaci przepuszcza zmiennej CH, a następnie wyświetlony na ekranie, jak to pokazano poniżej:

A.B.C.D.E.F.s. .a. .s.i.m.p.l.e. .t.e.x.t. .f.i.l.e. .f.o.r. .t.e.s.t.i.n.g. .p.u.r.p.o.s.e...

metodaIO.readlines

KlasaFilejest podklasą klasy IO. Klasa IO ma także kilka metod manipulacji plikami.

IO.readlinesjest klasa IO metoda. Sposób postępowy zwraca zawartości pliku. Poniższy kod przedstawia sposóbIO.readlinesużywania:

#!/usr/bin/ruby

arr = IO.readlines("input.txt")
puts arr[0]
puts arr[1]

W tym kodzie zmienna jest tablicą arr. Każdy wiersz jest plikiem arr tablicainput.txtelementu. Dlatego arr [0] będzie zawierał pierwszą linię, a arr [1] będzie zawierać drugą linię pliku.

metodaIO.foreach

Metoda zwraca również wyjście progresywne.Foreachpomiędzy różnymi sposobami i metodamireadlineszwiązany jest blok metodyforeach.Jednak w przeciwieństwie dometody,metodareadlinesforeach zamiast wracać tablicę. Na przykład:

#!/usr/bin/ruby

IO.foreach("input.txt"){|block| puts block}

Kod ten będzietestowaćzawartość pliku przeszedł zmienną blok postępowy, to wyjście będzie wyświetlany na ekranie.

Zmiana nazwy i usuwanie plików

Można zmieniać nazwy i usuwać pliki,zmiana nazwyiusuwaniemetod.

Poniższy przykład zmienia nazwę pliku, który już istniejetest1.txt:

#!/usr/bin/ruby

# 重命名文件 test1.txt 为 test2.txt
File.rename( "test1.txt", "test2.txt" )

Poniższy przykład, aby usunąć istniejącątest2.txt pliku:

#!/usr/bin/ruby

# 删除文件 test2.txt
File.delete("text2.txt")

Tryb plików i własności

Użyjchmod,aby zmienić metodę z uprawnieniami wzór maski lub pliku / liście dostępu:

Przykłady następujących zmian do istniejącego modelutest.txtplików dla wartości maski:

#!/usr/bin/ruby

file = File.new( "test.txt", "w" )
file.chmod( 0755 )

W poniższej tabeli wymieniono różne maski Metodachmodmożna stosować:

掩码描述
0700rwx 掩码,针对所有者
0400r ,针对所有者
0200w ,针对所有者
0100x ,针对所有者
0070rwx 掩码,针对所属组
0040r ,针对所属组
0020w ,针对所属组
0010x ,针对所属组
0007rwx 掩码,针对其他人
0004r ,针对其他人
0002w ,针对其他人
0001x ,针对其他人
4000执行时设置用户 ID
2000执行时设置所属组 ID
1000保存交换文本,甚至在使用后也会保存

Dostęp do dokumentu

Następujące polecenie, aby sprawdzić plik przed otwarciem pliku już istnieje:

#!/usr/bin/ruby

File.open("file.rb") if File::exists?( "file.rb" )

Następujące polecenie, aby zapytać, czy plik jest naprawdę pliku:

#!/usr/bin/ruby

# 返回 true 或false
File.file?( "text.txt" ) 

Następujące polecenie, aby sprawdzić, czy w danym pliku jest katalogiem:

#!/usr/bin/ruby

# 一个目录
File::directory?( "/usr/local/bin" ) # => true

# 一个文件
File::directory?( "file.rb" ) # => false

Są następujące polecenie, aby sprawdzić plik do odczytu, zapisu, plik wykonywalny:

#!/usr/bin/ruby

File.readable?( "test.txt" )   # => true
File.writable?( "test.txt" )   # => true
File.executable?( "test.txt" ) # => false

Poniższe polecenie sprawdza rozmiar pliku do zera:

#!/usr/bin/ruby

File.zero?( "test.txt" )      # => true

Następujące polecenie zwraca rozmiar pliku:

#!/usr/bin/ruby

File.size?( "text.txt" )     # => 1002

Poniższe polecenie służy do sprawdzania typ pliku:

#!/usr/bin/ruby

File::ftype( "test.txt" )     # => file

Metoda ftype zwraca wartość poniżej zidentyfikować typpliku: Plik, katalog characterSpecial, blockSpecial, FIFO, link, gniazdolub nieznane.

Poniższe polecenie służy do sprawdzania plik został utworzony, zmienione lub czas ostatniego dostępu:

#!/usr/bin/ruby

File::ctime( "test.txt" ) # => Fri May 09 10:06:37 -0700 2008
File::mtime( "text.txt" ) # => Fri May 09 10:44:44 -0700 2008
File::atime( "text.txt" ) # => Fri May 09 10:45:01 -0700 2008

katalog Ruby

Wszystkie pliki znajdują się w katalogu, Ruby dostarcza potrzebnych plików i katalogów.Plikklasy służące do pracy zplikami,klas Dir do katalogu roboczego.

Przejrzyj katalog

Aby zmienić katalog w programie Ruby, skorzystajDir.chdir.Poniższe przykłady zmiany aktualnego katalogu/ usr / bin.

Dir.chdir("/usr/bin")

Można wyświetlić aktualnąDir.pwd katalogu:

puts Dir.pwd # 返回当前目录,类似 /usr/bin

Można użyćDir.entriesuzyskać listę plików i katalogów wewnątrz określonego katalogu:

puts Dir.entries("/usr/bin").join(' ')

Dir.entrieszwraca tablicę zawierającą wszystkie określony katalog.Dir.foreachzapewnia taką samą funkcjonalność:

Dir.foreach("/usr/bin") do |entry|
   puts entry
end

Uzyskać listę katalogu bardziej zwięzły sposób to metoda za pomocą klasy Array reż:

Dir["/usr/bin/*"]

Utwórz katalog

Dir.mkdirmogą być wykorzystywane do tworzenia katalogu:

Dir.mkdir("mynewdir")

Można także ustawić uprawnienia do nowego katalogu (nie istniejącego katalogu) przyjęła mkdir:

Uwaga: Maska 755 Ustaw właściciela (właściciel), należący do grupy (grupy), każdy (światowa [ktoś]) Uprawnienia rwxr-xr-x, gdzie R = czytać czytać, w = Napisz, x = wykonać egzekucję.

Dir.mkdir( "mynewdir", 755 )

Usuń katalog

Dir.deletebyć stosowany do usuwania katalogów.Dir.unlinkiDir.rmdirpełnią tę samą funkcję, zapewnia nam wygodę.

Dir.delete("testdir")

Tworzenie katalogu tymczasowego pliku &

Pliki tymczasowe są tworzone, które są po prostu w trakcie realizacji programu, ale nie na stałe zapisane informacje.

Dir.tmpdirstanowi ścieżkę w bieżącym katalogu tymczasowego systemu, który domyślnie, ale jest niedostępny. AbyDir.tmpdirdostępne ze konieczna jest wymagana "tmpdir".

MożnaDir.tmpdiriFile.joinużywane razem, aby stworzyć platformę niezależne pliki tymczasowe:

require 'tmpdir'
   tempfilename = File.join(Dir.tmpdir, "tingtong")
   tempfile = File.new(tempfilename, "w")
   tempfile.puts "This is a temporary file"
   tempfile.close
   File.delete(tempfilename)

Kod ten tworzy plik tymczasowy, w którym do zapisu danych, a następnie usunąć plik. Rubin standardowa biblioteka zawiera bibliotekę nazwietempfilebiblioteki mogą być wykorzystywane do tworzenia pliku tymczasowego:

require 'tempfile'
   f = Tempfile.new('tingtong')
   f.puts "Hello"
   puts f.path
   f.close

Wbudowane funkcje

Poniżej przedstawiono kompletną listę plików i katalogów w wbudowanych funkcji Ruby: