Leo<HTML>

File Klasse

JS - Referenz
JS Syntax
Ausgabe
Leohtml Klasse
File Klasse
    Konzept
    Interface
    Handhabung
Get_tmp_file Funktion
Line Klasse
Tag Klasse
Lexer Klasse
Rebuilt_file Funktion
Für das Zugreifen auf Dateien ist diese Klasse zuständig. Die Klasse ist keinesfalls ein simples Interface zu einer Datei. Die Klasse wurde entwickelt um bei Bedarf entweder auf eine Datei zuzugreifen, oder eine Datei virtuell im Speicher zu simulieren.
Leo<HTML> nutzt diese Eigenschaft intensiv und muß daher keine temporären Dateien kreieren. Diese werden stattdessen in den Speicher geschrieben.
Also wundere dich nicht, und studieren diese Klasse intensiv.

Definition:

Klasse: File

Konstruktoren:


File();

File( String name, String openmode, Bool nocreate = false, Bool realfile = true);

File( File other_file );


Funktionen:


Null open( String name, String openmode, Bool nocreate = false, Bool realfile = true );

Bool is_valid();

String get_name();

Null trunc();

Bool eof();

Null clear();

Null flush();

Integer tellg();

Integer tellp();

Null seekg( Integer pos );

Null seekp( Integer pos );

Integer get();

Null put( Integer c );

String read( Integer n );

Null write( String s);

Null write( String s, Interger n);

String getline();

Null append( File other_file );

Null reference( File other_file );



Überblick
Bei dieser Klasse besteht eine Datei immer aus zwei Teilen: aus der eigentlichen Datei und einem Zeiger auf diese Datei. Es kann immer nur eine Datei geben, was klar sein sollte, aber es können mehrere Zeiger auf eine Datei zeigen.
Die File Klasse ist eigentlich ein Zeiger auf eine Datei. Wird nun die File Klasse kopiert, so wird nicht die Datei kopiert sondern nur der Zeiger auf die Datei. Somit kann die File Klasse problemlos dazu eingesetzt werden um als Funktionsparameter übergeben zu werden.

Die zweite Eigenschaft der File Klasse ist, das eine Datei nicht im Dateisystem existieren muß. Eine Datei kann auch einfach im Speicher erstellt werden. Dies ist ideal für temporäre Dateien.
Der Zugriff und auch die Erzeugung solcher virtuellen Dateien ist schneller als bei einer realen Datei. Der Vor- und Nachteil allerdings ist, dass eine solche Datei nur während der Ausführung von Leo<HTML> existiert. Dannach sind die Daten für immer verloren.

Hinweis:
Mit der Get_tmp_file Funktion können eindeutige Dateinamen angefordert werden, die sich sehr gut für die erzeugung von temporären Dateien eignet.




Konstruktoren
Es gibt 3 Konstruktoren:

File()
Eine neue Instanz dieser Klasse wird erzeugt. Diese Klasse ist so lange ungültig, bis mit open() eine Datei geöffnet wird, oder mit reference() eine andere Klasse übernommen wird.


File( String name, String openmode, Bool nocreate = false, Bool realfile = true)
Öffnde oder keriere eine Datei. Die Parameter sind die gleichen, wie bei der open() Funktion. Dort wirst du auch deren Beschreibung finden.


File( File other_file )
Kopiere die andere File Klasse. Dies beudeted nicht, dass die reale Datei kopiert wird. Nur der Zeiger auf die Datei wird kopiert.




Null open( String name, String openmode, nocreate = false, realfile = true )
Mit dieser Funktion kann eine Datei geöffnet werden.

String name
Der Name der Datei.


String openmode
Die Zugriffsart mit der die Datei geöffnet werden sell. Dies sind die Zeichen die verwendet werden können und deren Bedeutung:
r   Öffne Datei zum Lesen.
w   Öffne Datei zum Schreiben.
a   Öffne Datei zum Schreiben und hänge Daten an die Datei an.
t   Wenn Datei existiert, dann lösche den Inhalt.


Bool nocreate
Wenn der Parameter true ist, dann schlägt das Öffnen einer Datei fehl, wenn die Datei nicht existiert. Der default Wert dieser Option ist false.


Bool realfile
Ist der Parameter true wird eine reelle Datei verwendet. Wenn nicht, dann wird eine virtuelle Datei verwendet.




Bool is_valid()
Wenn die Klasse und die Datei auf die sie zeigt gültig sind, dann wird hier true zurückgegeben.


String get_name()
Die Funktion gibt den Namen der Datei zurück. Dies funktioniert sogar dann nachdem die Klasse ungältig geworden ist, also is_valid() false zurückliefert.

Beispiel:
  
function open_file( name ) { 
 
  var file = new File( name, "r", true, true ); 
 
  if( ! file.is_valid() ) { 
    message( "cannot open file", file.get_name() ); 
    return; 
  } 
 
  // .... 
} 
 
   



Null trunc()
Lösche den Inhalt der Datei.


Bool eof()
Gibt true zurück wenn das Ende der Datei erreicht wurde. Es wird solange true zurückgegeben bis clear() aufgerufen wurde.


Null flush()
Erzwingt das schreiben aller gepufferten Daten in die Datei.


Integer tellg()
Gibt die Position des Lese-Zeigers der Datei zurück.


Integer tellp()
Gibt die Position des Schreib-Zeigers der Datei zurück.


Null seekg( Integer pos )
Setzt die Position des Lese-Zeigers der Datei.


Null seekp( Integer pos )
Setzt die Position des Schreib-Zeigers der Datei.


Integer get()
Gibt das nächste Zeichen der Datei zurück.


put( Integer c )
Schreibt das gegebene Zeichen in die Datei.


String read( Integer n )
Liest n Zeichen aus der Datei.


Null write( String s )
Schreibt die Zeichenkette s in die Datei.


Null write( String s, Integer n )
Schreibt n Zeichen, der Zeichenkette s in die Datei.


String getline()
Liest eine Zeile aus der Datei.


Null append( File other_file )
Hängt einen gegebene Datei an die momentane Datei an.


Null reference( File other_file )
Die Funktion kopiert den Dateizeiger der anderen Klasse auf diese Klasse. In anderen Worten die Klassen werden einfach kopiert. Es das selbe, wie wenn du die Datei der anderen Klasse normal öffnest.

Beispiel:
  
var file1 = new File( "foo.txt", "rw" ); 
 
 
// erste Methode 
var file2 = new File( "foo.txt", "rw" ); 
 
// zweite Methode 
var file2 = new File(); 
 
file2.reference( file1 ); 
 



Nocheinmal: Dies hat aber keine Auswirkungen auf die reelle Datei. Es wird nur der Zeiger auf die Datei kopiert.
Nach der benutztung dieser Funktion bitte überprüfe die Gültigkeit der Klasse mit der is_valid() Funktion.


An example for the usage of the Line class you will find there: Beispiel



Diese Seite wurde von King Leo kreiert. Seitengenerator Leo<HTML> Version 0.99.0 .