Latest web development tutorials

Ruby Datei Eingangs- und Ausgangs

Rubin bietet eine Reihe von I / O-Verfahren, in dem Kernel (Kernel) Modul implementiert. Alle I / O-Methode wird von der IO-Klasse abgeleitet.

IOliefert alle klassenbasierten Ansatz, wieLesen, Schreiben, bekommt, Puts,Readline-, getc undprintf.

In diesem Abschnitt werden alle verfügbaren Rubin-basierte I / O-Funktionen erklären. Weitere Funktionen finden Sie in RubyIO- Klasse.

stelltAussage

Im vorigen Abschnitt, Sie zu einer Variablen zugewiesen, und verwenden Sie dann denPutsAussage Ausdruck.

stelltAnweisung gibt an, dass das Programm die Werte in den Variablen gespeichert anzeigt. Dies wird eine neue Zeile am Ende jeder Zeile hinzufügen.

Beispiele

#!/usr/bin/ruby

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

Führen Sie das obige Beispiel Ausgabe lautet:

This is variable one
This is variable two

bekommtStatement

erhältAnweisung verwendet werden können Benutzereingaben aus dem Standardbild STDIN zu erhalten.

Beispiele

Der folgende Code zeigt, wie bekommt Anweisung. Der Code wird der Benutzer aufgefordert, einen Wert einzugeben, die in der Variablen val gespeichert wird, wird das Finale am STDOUT gedruckt werden.

#!/usr/bin/ruby

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

Führen Sie das obige Beispiel Ausgabe lautet:

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

putcAussage

Undstellteine andere Anweisung,legtdie Anweisung , um die Ausgabe der ganzen Zeichenfolgen den Bildschirm, währendputcAnweisung kann eine Zeichenfolge ausgegeben werden.

Beispiele

Der Ausgang des folgenden Codes nur Zeichen H:

#!/usr/bin/ruby

str="Hello Ruby!"
putc str

Führen Sie das obige Beispiel Ausgabe lautet:

H

print- Anweisungen

print- Anweisungen undstellteine ähnliche Aussage. Der einzige Unterschied ist , dass nach der Aussagesetztdie Ausgabe in die nächste Zeile zu springen, während die Verwendung vonprint- Anweisung, wird der Cursor auf der gleichen Linie positioniert ist.

Beispiele

#!/usr/bin/ruby

print "Hello World"
print "Good Morning"

Führen Sie das obige Beispiel Ausgabe lautet:

Hello WorldGood Morning

Öffnen und Schließen von Dateien

Ab sofort müssen Sie in der Standard-Ein- und Ausgabe lesen und schreiben. Jetzt werden wir an, wie die eigentlichen Daten-Dateien zu suchen.

File.newVerfahren

Sie können einFile- Objekt wird angelegtFile.newMethode, schreiben oder zu lesen und zu schreiben, lesen und schreiben Berechtigungen je nach Modus Parameter zu lesen. Schließlich können SieFile.closeMethode zum Schließen der Datei verwenden.

Grammatik

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

File.openVerfahren

Sie können ein neues Dateiobjekt mitFile.openMethode zu erstellen, und das Objekt in die Datei Datei zugeordnet ist. Jedoch gibt es einen Unterschied zwischenFile.openundFile.newMethoden. Der Unterschied ist ,File.openVerfahren kann mit dem Block zugeordnet werden, aber nichtFile.newMethode.

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

Die folgende Tabelle listet die geöffneten Dateien in verschiedenen Modi:

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

Das Lesen und Schreiben von Dateien

Das Verfahren zum einfachen I / O kann auch für alle Dateiobjekte verwendet werden. So bekommt liest eine Zeile von derStandardeingabeliest aFile.gets aFile eine Zeile aus dem Dateiobjekt.

Allerdings, I / O-Objekt stellt einen zusätzlichen Satz von Zugriffsmethoden, bietet uns Komfort.

sysreadVerfahren

Sie können die Methodesysreadverwenden Sie den Inhalt der Datei zu lesen. Wenn die Methode sysread verwenden, können Sie eine beliebige Modus verwenden, um die Datei zu öffnen. Zum Beispiel:

Im Folgenden ist der Eingabetextdatei:

This is a simple text file for testing purpose.

Nun wollen wir versuchen, die Datei zu lesen:

#!/usr/bin/ruby

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

Diese Erklärung wird die ersten 20 Zeichen der Datei eingeben. Der Dateizeiger wird in einer Position in der Datei 21 Zeichen platziert werden.

syswriteVerfahren

Sie können die Methodesyswriteverwenden , um die Datei zu schreiben. Wenn die Methode syswrite verwenden, müssen Sie die Datei im Schreibmodus zu öffnen. Zum Beispiel:

#!/usr/bin/ruby

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

Die Anweisungen werden geschrieben "ABCDEF" in einer Datei.

each_byteVerfahren

Diese Methode gehört zu der KlasseDatei.Each_byte iteratives Verfahren ist jedes Zeichen in String können. Betrachten Sie die folgenden Code-Beispiele:

#!/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

Einer nach dem anderen Zeichen Variable ch vergangen, und dann auf dem Bildschirm angezeigt, wie unten dargestellt:

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...

IO.readlinesVerfahren

File- Klasse ist eine Unterklasse der Klasse IO. IO-Klasse hat auch einige Methoden für die Dateien zu manipulieren.

IO.readlinesist IO - Klasse eine Methode. Die progressive Methode gibt den Inhalt der Datei. Der folgende Code zeigt ein VerfahrenIO.readlinesverwenden:

#!/usr/bin/ruby

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

In diesem Code ist die Variable ein Array arr. Jede Zeile ist ein Array arr Dateiinput.txtein Element. Daher arr [0] wird die erste Zeile enthalten, und arr [1] wird die zweite Zeile der Datei enthalten.

IO.foreachVerfahren

Die Methode gibt auch progressive Ausgabe.Foreachzwischen verschiedenen Methoden und Verfahren ist Verfahrenreadlinesforeach Block zugeordnet. Doch im Gegensatz zu dem VerfahrenLeseleitungen,foreach Methode anstelle einer Anordnung zurückzukehren. Zum Beispiel:

#!/usr/bin/ruby

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

Dieser Code wird der Inhalt der Datei übergebene Variable progressive Block zutesten,dann wird die Ausgabe auf dem Bildschirm angezeigt werden.

Umbenennen und Löschen von Dateien

Sie können umbenennen und löschen Sie Dateienumbenennenund Methodenlöschen.

Das folgende Beispiel benennt eine Datei , die bereitstest1.txtvorhanden ist:

#!/usr/bin/ruby

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

Das folgende Beispiel eine vorhandene Dateitest2.txtzulöschen:

#!/usr/bin/ruby

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

File-Modus und Eigentum

Verwenden Siechmoddie Methode mit einem Maskenmuster oder Dateiberechtigungen / Zugriffsliste zu ändern:

Beispiele für die folgenden Änderungen an einer bestehenden Dateitest.txtModell für einen Maskenwert:

#!/usr/bin/ruby

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

Die folgende Tabelle listet die verschiedenen MaskenchmodVerfahren verwendet werden können:

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

Document Access

Mit dem folgenden Befehl die Datei zu überprüfen, bevor die Datei bereits vorhanden Eröffnung:

#!/usr/bin/ruby

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

Der folgende Befehl zur Abfrage, ob die Datei wirklich eine Datei:

#!/usr/bin/ruby

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

Nach Befehl, ob die angegebene Datei zu überprüfen ist ein Verzeichnis:

#!/usr/bin/ruby

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

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

Sind Sie den folgenden Befehl die Datei lesbar, beschreibbar, ausführbare Datei zu überprüfen:

#!/usr/bin/ruby

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

Der folgende Befehl prüft die Dateigröße auf Null:

#!/usr/bin/ruby

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

Der folgende Befehl gibt die Größe der Datei:

#!/usr/bin/ruby

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

Der folgende Befehl wird verwendet, um die Art der Datei zu überprüfen:

#!/usr/bin/ruby

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

ftype Methode gibt einen Wert des folgenden die Art derDateizuidentifizieren: Datei, Verzeichnis, characterSpecial, blockSpecial, Fifo, Link, Buchseoder unbekanntist.

Der folgende Befehl wird verwendet, um die Datei zu überprüfen, wurde erstellt, geändert oder letzten Zugriffszeit:

#!/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

Ruby-Verzeichnis

Alle Dateien im Verzeichnis enthalten sind, bietet Ruby eine Prozess-Dateien und Verzeichnisse.Datei- Klassen für die Arbeit mitDateien,Dir Klassen für Arbeitsverzeichnis.

Sie sehen den Katalog

Um das Verzeichnis in dem Programm Rubin zu ändern, benutzen Sie bitteDir.chdir.Beispiele für die folgenden Änderungen in das aktuelle Verzeichnis/ usr / bin.

Dir.chdir("/usr/bin")

Sie können das aktuelle VerzeichnisDir.pwd anzuzeigen:

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

Sie können mitDir.entrieseine Liste von Dateien und Verzeichnisse innerhalb eines angegebenen Verzeichnis erhalten:

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

Dir.entriesgibt ein Array alle das angegebene Verzeichnis enthält.Dir.foreachbietet die gleiche Funktionalität:

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

Holen Sie sich ein Verzeichnis-Liste von einem prägnanten Art und Weise ist eine Methode, durch die Dir Klasse Array mit:

Dir["/usr/bin/*"]

Erstellen Sie ein Verzeichnis

Dir.mkdirkann das Verzeichnis zu erstellen verwendet werden:

Dir.mkdir("mynewdir")

Sie können einstellen, auch die Berechtigungen für das neue Verzeichnis (nicht vorhandene Verzeichnis) angenommen mkdir:

Hinweis: Maske 755 Set Besitzer (Eigentümer), gehört zu der Gruppe (Gruppe), alle (Welt [jedermann]) Berechtigungen rwxr-xr-x, wobei r = lesen lesen, w = schreiben , schreiben, x = ausführen Ausführung.

Dir.mkdir( "mynewdir", 755 )

Verzeichnis entfernen

Dir.deleteverwendet werden Verzeichnisse zu löschen.Dir.unlinkundDir.rmdirdie gleiche Funktion, bietet uns Komfort.

Dir.delete("testdir")

Erstellen Sie ein temporäres Verzeichnis File &

Temporäre Dateien werden erstellt, die einfach in den Prozess der Durchführung des Programms sind, aber nicht dauerhaft gespeicherten Informationen.

Dir.tmpdirstellt einen Pfad auf dem aktuellen System temporäre Verzeichnis, das standardmäßig, aber nicht verfügbar ist. UmDir.tmpdirzur Verfügung, mit der erforderlichen 'tmpdir' notwendig.

Sie könnenDir.tmpdirundFile.joinverwendet zusammen , um eine plattformunabhängige , temporäre Dateien zu erstellen:

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)

Dieser Code erstellt eine temporäre Datei, in der Daten zu schreiben, und dann die Datei zu löschen. Ruby - Standard - Bibliothek enthält auch eine Bibliothek mit dem NamenTempfileder Bibliothek kann verwendet werden , um eine temporäre Datei zu erstellen:

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

Eingebaute Funktionen

Nachfolgend finden Sie eine vollständige Liste der Dateien und Verzeichnisse in Ruby eingebauten Funktionen: