instance methods
|
<<
|
ios << einObject-> ios |
|
String Ausgabe---Schreibt einObject nach ios.
einObject wird mit to_s in einen String konvertiert.
$stdout << "Hello " << "world!\n"
|
ergibt:
|
binmode
|
ios.binmode -> ios |
|
Setzt ios in den Binärmodus. Dies ist nur in MS-DOS/Windows Umgebungen sinnvoll.
Wenn ein Stream in den Binärmodus gesetzt wurde, kann er nicht mehr in den nicht-binären Modus
zurückgesetzt werden.
|
clone
|
ios.clone -> einIO |
|
Eröffnet einen neuen I/O-Stream und kopiert dabei alle Attribute von ios.
Auch die Dateiposition wird geteilt, so dass ein Lesevorgang auf dem Clone auch die
Position des Originals verschiebt (und umgekehrt).
|
close
|
ios.close -> nil |
|
Schließt ios und gibt alle wartenden Schreibzugriffe an das Dateisystem weiter.
Der Stream ist danach für alle weiteren Datenoperationen nicht mehr verfügbar;
ein Versuch, dies trotzdem zu tun, führt zu einem IOError .
I/O-Streams werden automatisch geschlossen, wenn sie vom Garbage Collector beansprucht werden.
|
close_read
|
ios.close_read -> nil |
|
Schließt das Lese-Ende eines duplex-I/O-Streams (d.h., eines Streams,
der sowohl einen Lese- als auch einen Schreib-Stream besitzt, wie z.B. eine Pipe).
Wenn der Stream keine Duplex-Eigenschaft hat, wird ein IOError
geworfen.
f = IO.popen("/bin/sh","r+")
f.close_read
f.readlines
|
ergibt:
prog.rb:3:in `readlines': not opened for reading (IOError)
from prog.rb:3
|
|
close_write
|
ios.close_write -> nil |
|
Schließt das Schreib-Ende eines duplex-I/O-Streams (d.h., eines Streams,
der sowohl einen Lese- als auch einen Schreib-Stream besitzt, wie z.B. eine Pipe).
Wenn der Stream keine Duplex-Eigenschaft hat, wird ein IOError
geworfen.
f = IO.popen("/bin/sh","r+")
f.close_write
f.print "nowhere"
|
ergibt:
prog.rb:3:in `write': not opened for writing (IOError)
from prog.rb:3:in `print'
from prog.rb:3
|
|
closed?
|
ios.closed?
-> true oder false |
|
Gibt true zurück, wenn ios vollständig geschlossen ist (für
duplex-Streams, also sowohl Lese- wie auch Schreibstream), sonst false .
f = File.new("testfile") |
f.close |
» |
nil |
f.closed? |
» |
true |
f = IO.popen("/bin/sh","r+") |
f.close_write |
» |
nil |
f.closed? |
» |
false |
f.close_read |
» |
nil |
f.closed? |
» |
true |
|
each
|
ios.each( einSepString=$/ )
{| line | block }-> ios |
|
Führt den Codeblock für jede Zeile in ios aus, wobei aSepString
als Zeilentrenner verwendet wird.
ios muss für den Lesezugriff geöffnet sein, sonst wird ein
IOerror geworfen.
f = File.new("testfile")
f.each {|line| puts "#{f.lineno}: #{line}" }
|
ergibt:
1: This is line one
2: This is line two
3: This is line three
4: And so on...
|
|
each_byte
|
ios.each_byte {| byte | block }-> nil |
|
Ruft den gegebenen Codeblock einmal für jedes Byte (0..255) in ios aus,
wobei das Byte als Argument übergeben wird.
Der Stream muss für den Lesezugriff geöffnet sein, sonst wird ein
IOerror geworfen.
f = File.new("testfile") |
checksum = 0 |
f.each_byte {|x| checksum ^= x } |
» |
nil |
checksum |
» |
12 |
|
each_line
|
ios.each_line(
einSepString=$/ ) {| line | block }-> ios |
|
Synonym für IO#each .
|
eof
|
ios.eof
-> true oder false |
|
Gibt true zurück, wenn ios am Ende der Datei (end of
file, d.Red.) steht. Der Stream muss für den Lese-Zugriff geöffnet sein, sonst wird
ein IOError geworfen.
f = File.new("testfile") |
dummy = f.readlines |
f.eof |
» |
true |
|
eof?
|
ios.eof?
-> true oder false |
|
Synonym für IO#eof .
|
fcntl
|
ios.fcntl( einIntegerCmd, einArg )
-> einInteger |
|
Ermöglicht die Ausführung von Kommandos zur Kontrolle oder Abfrage von Datei-orientierten
I/O-Streams auf niedriger Systemebene. Argumente und Ergebnis sind Plattform-abhängig.
Wenn einArg eine Zahl darstellt, wird sein Wert direkt weitergegeben, während
ein String als Binärsequenz von Bytes interpretiert wird.
Unter Unix, siehe fcntl(2) für Details.
Nicht auf allen Plattformen implementiert.
|
fileno
|
ios.fileno -> eineFixnum |
|
Gibt den numerischen Deskriptor für ios als Ganzzahl zurück.
$stdin.fileno |
» |
0 |
$stdout.fileno |
» |
1 |
|
flush
|
ios.flush -> ios |
|
Gibt alle gepufferten Daten in ios an das zugrunde liegende Dateisystem weiter
(nota bene: Dies betrifft die internen Puffer von Ruby; auch das Betreibssystem kann
die Daten puffern).
$stdout.print "no newline"
$stdout.flush
|
ergibt:
|
getc
|
ios.getc -> eineFixnum oder nil |
|
Liest das nächste 8-bit Byte (0..255) aus ios.
Die Methode gibt nil zurück, wenn sie am Ende der Datei aufgerufen wird.
f = File.new("testfile") |
f.getc |
» |
84 |
f.getc |
» |
104 |
|
gets
|
ios.gets( einSepString=$/ )
-> einString oder nil |
|
Liest die nächste ``Zeile'' vom I/O-Stream, wobei einSepString als Zeilentrenner
verwendet wird. Ein Separator vom Wert nil liest den gesamten Inhalt, während ein
Separator der Länge Null die Eingabe bis zum Ende des Absatzes liest (ein Absatz ist durch
zwei aufeinander folgende Zeilenumbrüche gekennzeichnet). Der Stream muss für den Lesezugriff
geöffnet sein, sonst wird ein IOerror geworfen. Die eingelesene Zeile
wird zurckgegeben und auch der Variable $_ zugewiesen.
Die Methode gibt nil zurück, wenn sie am Ende der Datei aufgerufen wird.
File.new("testfile").gets |
» |
"This is line one\n" |
$_ |
» |
"This is line one\n" |
|
ioctl
|
ios.ioctl( einIntegerCmd, einArg )
-> einInteger |
|
Ermöglicht die Ausführung von Kommandos zur Kontrolle oder Abfrage von I/O-Geräten auf
niedriger Systemebene. Argumente und Ergebnis sind Plattform-abhängig.
Wenn einArg eine Zahl darstellt, wird sein Wert direkt weitergegeben, während
ein String als Binärsequenz von Bytes interpretiert wird.
Unter Unix, siehe ioctl(2) für Details.
Die Methode ist nicht auf allen Plattformen implementiert.
|
isatty
|
ios.isatty
-> true oder false |
|
Gibt true zurück, wenn ios mit einem Terminal-Endgerät (tty)
assoziiert ist, sonst false .
File.new("testfile").isatty |
» |
false |
File.new("/dev/tty").isatty |
» |
true |
|
lineno
|
ios.lineno -> einInteger |
|
Gibt die aktuelle Zeilennummer in ios zurück. Der Stream muss für den
Lesezugriff geöffnet sein. lineno zählt, wie oft gets
aufgerufen wurde, nicht die Anzahl der gefunden Zeilenumbrüche. Die beiden Werte
weichen voneinander ab, wenn gets mit einem Separator aufgerufen wird,
der nicht der Zeilenumbruch ist. Vgl. auch die Variable $. .
f = File.new("testfile") |
f.lineno |
» |
0 |
f.gets |
» |
"This is line one\n" |
f.lineno |
» |
1 |
f.gets |
» |
"This is line two\n" |
f.lineno |
» |
2 |
|
lineno=
|
ios.lineno = einInteger-> einInteger |
|
Setzt die aktuelle Zeilennummer manuell auf den angegeben Wert.
Die Variable $. wird erst beim nächsten Lesezugriff aktualisiert.
f = File.new("testfile") |
f.gets |
» |
"This is line one\n" |
$. |
» |
1 |
f.lineno = 1000 |
f.lineno |
» |
1000 |
$. # lineno of last read |
» |
1 |
f.gets |
» |
"This is line two\n" |
$. # lineno of last read |
» |
1001 |
|
pid
|
ios.pid -> eineFixnum |
|
Gibt die Prozess-ID eines Kind-Prozesses zurück, der mit ios assoziiert ist.
Dies kann mit IO.popen
gesetzt werden.
pipe = IO.popen("-")
if pipe
$stderr.puts "In parent, child pid is #{pipe.pid}"
else
$stderr.puts "In child, pid is #{$$}"
end
|
ergibt:
In parent, child pid is 15545
In child, pid is 15545
|
|
pos
|
ios.pos -> einInteger |
|
Gibt die aktuelle Position (offset vom Dateibeginn) von ios in Bytes zurück.
f = File.new("testfile") |
f.pos |
» |
0 |
f.gets |
» |
"This is line one\n" |
f.pos |
» |
17 |
|
pos=
|
ios.pos = einInteger-> 0 |
|
Verschiebt den Zähler in ios auf die angegebene Position (in Bytes).
f = File.new("testfile") |
f.pos = 17 |
f.gets |
» |
"This is line two\n" |
|
print
|
ios.print( [einObject=$_ ]* )
-> nil |
|
Schreibt das (die) angebenen Objekt(e) nach ios. Der Stream muss für den
Schreibzugriff geöffnet sein. Wenn der Datenausgabe-Separator ($\ ) nicht
nil ist, wird er an die Ausgabe gehängt. Wenn keine Argumente übergeben werden,
wird der Inhalt von $_ ausgegeben. Objekte, die nicht Strings sind, werden
mit ihrer to_s -Methode konvertiert.
Gibt nil zurück.
$stdout.print("This is ", 100, " percent.\n")
|
ergibt:
|
printf
|
ios.printf( einFormatString[, einObject]* )
-> nil |
|
Schreibt eine formatierte Ausgabe nach ios, wobei die Parameterausgabe durch den
Formatstring kontrolliert wird. Siehe Kernel#sprintf
für details.
|
putc
|
ios.putc( anObject )
-> anObject |
|
Schreibt das angegebene Zeichen (aus einem String oder einer Fixnum )
nach ios.
$stdout.putc "A"
$stdout.putc 65
|
ergibt:
|
puts
|
ios.puts( [einObject]* )
-> nil |
|
Schreibt die übergebenen Objekte nach ios analog zu
IO#print .
Nach jedem Objekt, das nicht mit einem Zeilenumbruch endet schreibt die Methode
einen Zeilentrenner (typischerweise ein Zeilenumbruch). Wenn die Methode mit einem
Array als Argument aufgerufen wird, schreibt sie jedes Element in eine neue Zeile.
Bei Aufruf ohne ein Argument, wird nur ein Zeilenumbruch geschrieben.
$stdout.puts("this", "is", "a", "test")
|
ergibt:
|
read
|
ios.read( [einInteger] )
-> einString oder nil |
|
Liest höchstens einInteger Bytes vom I/O-Stream ein. Falls anInteger
nicht angegeben ist, wird bis zum Ende der Datei gelesen.
Gibt nil zurück, wenn der Aufruf am Ende der Datei erfolgt.
f = File.new("testfile") |
f.read(16) |
» |
"This is line one" |
|
readchar
|
ios.readchar -> eineFixnum |
|
Liest ein Zeichen analog zu IO#getc ,
wirft jedoch einen EOFError , wenn das Ende der Datei erreicht ist.
|
readline
|
ios.readline( einSepString=$/ )
-> einString |
|
Liets ein Zeile analog zu IO#gets ,
wirft jedoch einen EOFError , wenn das Ende der Datei erreicht ist.
|
readlines
|
ios.readlines(
einSepString=$/ )
-> einArray |
|
Liest all Zeilen von ios und gibt sie in einArray zurück.
Als Zeilentrenner wird der optionale einSepString verwendet.
Der Stream muss für den Lesezugriff geöffnet sein, sonst wird ein
IOerror geworfen.
f = File.new("testfile") |
f.readlines[0] |
» |
"This is line one\n" |
|
reopen
|
ios.reopen( einAndererIO ) -> ios ios.reopen( einPfad, einModusStr ) -> ios |
|
Assoziiert ios wieder mit dem I/O-Stream, der in einAndererIO gegeben
ist bzw. mit einem neuen Stream auf einPfad. Dies kann einen dynamischen Wechsel
der Klasse dieses Streams zur Folge haben.
f1 = File.new("testfile") |
f2 = File.new("testfile") |
f2.readlines[0] |
» |
"This is line one\n" |
f2.reopen(f1) |
» |
#<File:0x4018d608> |
f2.readlines[0] |
» |
"This is line one\n" |
|
rewind
|
ios.rewind -> 0 |
|
Positioniert ios an den Anfang der Eingabe; setzt gleichzeitig
lineno auf Null zurück.
f = File.new("testfile") |
f.readline |
» |
"This is line one\n" |
f.rewind |
» |
0 |
f.lineno |
» |
0 |
f.readline |
» |
"This is line one\n" |
|
seek
|
ios.seek( einInteger,
whence=SEEK_SET )
-> 0 |
|
Sucht im Stream bis zum angegebenen Offset von einInteger in Übereinstimmung
mit dem Wert von whence:
 |
IO::SEEK_CUR |
Sucht bis einInteger plus aktueller Position. |
IO::SEEK_END |
Sucht bis einInteger plus Ende des Stream (Sie werden wahrscheinlich
einen negativen Wert für einInteger) wählen. |
IO::SEEK_SET |
Sucht die absolute Position, die durch einInteger spezifiziert ist. |
 |
f = File.new("testfile") |
f.seek(-13, IO::SEEK_END) |
» |
0 |
f.readline |
» |
"And so on...\n" |
|
stat
|
ios.stat -> einStat |
|
Gibt die Statusinformation für ios als ein Objekt des Typs
File::Stat zurück.
f = File.new("testfile") |
s = f.stat |
"%o" % s.mode |
» |
"100644" |
s.blksize |
» |
4096 |
s.atime |
» |
Sun Mar 04 23:28:52 CST 2001 |
|
sync
|
ios.sync
-> true oder false |
|
Gibt den aktuellen ``sync mode'' von ios zurück. Wenn der sync
Modus auf true gesetzt ist, werden alle Ausgaben direkt an
das zugrunde liegende Betriebssystem weitergegeben; d.h. sie werden nicht
intern durch Ruby gepuffert.
f = File.new("testfile") |
f.sync |
» |
false |
|
sync=
|
ios.sync = einBoolean-> einBoolean |
|
Setzt den ``sync mode'' auf true oder false .
Wenn der sync Modus auf true gesetzt ist, werden alle Ausgaben
direkt an das zugrunde liegende Betriebssystem weitergegeben; d.h. sie werden
nicht intern durch Ruby gepuffert.
f = File.new("testfile")
f.sync = true
|
|
sysread
|
ios.sysread( einInteger )
-> einString |
|
Liest einInteger Bytes unter Verwendung eines Read-Befehls auf niedriger Ebene
von ios aus und gibt sie als String zurück.
Diese Methode darf nicht zusammen mit anderen Lese-Methoden verwendet werden ios,
da sonst unvorhersehrbare Ergebnisse erzielt werden.
Die Methode wirft einen SystemCallError bei auftretenden Fehler
bzw. einen EOFError , wenn sie am Ende der Datei aufgerufen wurde.
f = File.new("testfile") |
f.sysread(16) |
» |
"This is line one" |
|
syswrite
|
ios.syswrite( einString )
-> einInteger |
|
Schreibt den übergebenen String mit Hilfe eines Write-Befehls auf niedrigerer Ebene nach
ios. Gibt die Anzahl der geschriebenen Bytes zurück.
Die Methode sollte nicht zusammen mit anderen Schreibzugriffen auf ios vewendet
werden, sonst treten unvorhersehbare Ergebnisse auf.
Die Methode wirft bei Fehlern einen SystemCallError .
f = File.new("out", "w") |
f.syswrite("ABCDEF") |
» |
6 |
|
tell
|
ios.tell -> einInteger |
|
Synonym für IO#pos .
|
to_i
|
ios.to_i -> einInteger |
|
Synonym für IO#fileno .
|
to_io
|
ios.to_io -> ios |
|
Gibt ios zurück.
|
tty?
|
ios.tty?
-> true oder false |
|
Synonym für IO#isatty .
|
ungetc
|
ios.ungetc( einInteger )
-> nil |
|
Schiebt das letzte gelesene Zeichen nach ios zurück, so dass ein darauf folgender
Lesezugriff dieses Zeichen wieder einliest. Es kann nur ein Zeichen vor einem neuerlichen
Lesezugriff zurückgeschoben werden (d.h., von mehreren zurückgeschobenen Zeichen kann nur
das letzte gelesen werden). Die Methode hat keinen Einfluss auf ungepufferte Lesezugriffe
(wie IO#sysread ).
f = File.new("testfile") |
» |
#<File:0x4018d66c> |
c = f.getc |
» |
84 |
f.ungetc(c) |
» |
nil |
f.getc |
» |
84 |
|
write
|
ios.write( einString )
-> einInteger |
|
Schreibt einen gegebenen String nach ios. Der Stream muss für
Schreibzugriffe geöffnet sein. Wenn das Argument kein String ist, wird es in
einen solchen mit Hilfe der Methode to_s konvertiert.
Gibt die Anzahl der geschriebenen Bytes zurück.
count = $stdout.write( "This is a test\n" )
puts "That was #{count} bytes of data"
|
ergibt:
This is a test
That was 15 bytes of data
|
|