Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Dateizugriffe mit Applikationen 2. Dateizugriffe mit Applets

Ähnliche Präsentationen


Präsentation zum Thema: "Dateizugriffe mit Applikationen 2. Dateizugriffe mit Applets"—  Präsentation transkript:

1 Dateizugriffe mit Applikationen 2. Dateizugriffe mit Applets
Dateiarbeit in Java Dateizugriffe mit Applikationen 2. Dateizugriffe mit Applets

2 1. Dateizugriffe mit Applikationen
hier: nur Zugriff auf lokale Speichermedien Internet-Zugriffe: siehe 2. 1.1 Verzeichnisanalyse mit Objekt File File repräsentiert Datei des zugrundeliegenden Dateisystems kann für spezielle (bereits existierende) Datei erstellt werden Konstruktion: mit String, der zu behandelnde Datei angibt

3 Methoden von File Methode Resultat Bedeutung canRead boolean
Kann Datei gelesen werden? canWrite Kann Datei geschrieben werden? delete Löscht Datei equals Vergleicht mit Dateinamen exists Existiert Datei? isDirectory Ist Datei ein Verzeichnis? lastModified long Letzte Änderung der Datei (ms seit ) length Dateigröße (Bytes) list String[] ggf. Feld mit im Verzeichn. enthaltenen Dateien mkdir ggf. Unterverzeichnis anlegen renameTo Benennt Datei um

4 list-Methode: kann ein FilenameFilter-Objekt übergeben bekommen, um nur bestimmte Dateien aufzulisten FilenameFilter: akzeptiert Dateien abhängig von ihren Namen Beispiel: FileTest-Applikation

5 1.2 Ein- / Ausgabe von Dateien
FileInputStream / FileOutputStream: Nachkommen von InputStream / OutputStream  byteorientiert  Filtern mit DataInputStream / DataOutputStream FileOutputStream: Konstruktion mit Datei spezifizierendem String bzw. File-Objekt alternativ 2. boolescher Parameter möglich: Ausgaben an Dateiende anhängen, wenn true wirft aus: IOException, SecurityException neue Methode: Close (explizites Schließen der Datei)

6 Beispiel für FileOutputStream:
FileOutputStream fos = new FileOutputStream("bytes"); DataOutputStream dos = new DataOutputStream(fos); dos.writeByte(45); dos.writeFloat( f); dos.writeLong(123456); dos.close(); FileInputStream: Konstruktion analog mit String bzw. File-Objekt: PrintWriter out = new PrintWriter(System.out, true); try { DataInputStream dis = new DataInputStream(new FileInputStream("bytes")); byte b = dis.readByte(); float f = dis.readFloat(); long l = dis.readLong(); out.println(b + " " + f + " " + l); } catch (FileNotFoundException e) { out.println("Datei \"bytes\" nicht gefunden!"); }

7 Serialisieren von Objekten
FileReader / FileWriter: Nachkommen von InputStreamReader / OutputStreamWriter  Filtern mit BufferedReader / PrintWriter möglich Konstruktion: wie FileInputStream / FileOutputStream keine neuen Methoden Bsp: FileTest Serialisieren von Objekten Serialisieren: Zustand eines Objektes systemunabh. in Bytes umwandeln Deserialisieren: Objekt anhand der Byterepräsentation wieder rekonstruieren Bedingg.: Objektklasse muss Interface Serializable aus java.io implementieren

8 Verwendung: ObjectInputStream / ObjectOutputStream (Nachfolger von InputStream / OutputStream)
Konstruktoren: verlangen konkreten In- / OutputStream als Argument Methoden: flush, writeBoolean, writeByte, ... wie bei DataIn- / DataOutputStream close(): ruft flush auf (nur ObjectOutputStream) und schließt gefilterten Stream void writeObject(Object o): Objekt serialisieren  schreibt alle Variablen (außer Zeiger) des Objektes in Stream  durch Zeigervariablen referenzierte Obj. werden wiederum serialisiert Object readObject(): Objekt deserialisieren  bestimmt Klasse des Objekts, erstellt Objekt neu, kopiert Variablen aus Stream, serialisiert ggf. referenzierte Objekte Exceptions: IOException (alle Methoden und Konstruktoren) ClassNotFoundException (Methode readObject): falls die Klasse des einzulesenden Objektes unbekannt ist Beispiel: PersistFrame / FrameEinAus

9 Nicht-serielle Dateizugriffe
RandomAccessFile: freier L./S.-Zugriff auf beliebige Position in Datei möglich JDBC (Java Database Connectivity): ermöglicht Anbindg. von Java an relationale Datenbanken benötigt: JDBC-Treiber des jeweiligen Datenbankherstellers über Java-integrierte JDBC-ODBC-Bridge auch ODBC-Treiber ansprechbar (ODBC: Microsoft Open Database Connectivity) Package: java.sql

10 Weitere Klassen LineNumberInputStream: Zeilennummern merken
StreamTokenizer: Zerlegt einen InputStream oder Reader in seine Tokens (Bezeichner, Schlüsselwörter, Operatoren usw.)

11 2. Dateizugriffe mit Applets
2.1 Zugriff auf lokale Dateien Sandbox-Prinzip: Java-Appletts werden normalerweise im "Sandkasten" ausgeführt  keine evt. für ausführenden Computer gefährlichen Zugriffe möglich ab Internet Explorer 4 / Netscape Navigator 4: Trusting: Unterzeichnen des Applet-Codes mit "Digital ID" Benutzer kann anhand der ID über Ausführung des Applets außerhalb der Sandbox entscheiden Digital ID nach asymmetrischem Verschlüsselungsverfahren privater Schlüssel: Unterschreiben des Codes öffentl. Schl.: von jedem zur Überprüfung der Unterschr. benutzbar ID wiederum unterschrieben von einer "Certificate Authority" (CA), deren ID bereits im Browser installiert ist CAs: z. B. VeriSign, Thawte

12 funktioniert nur mit NN, MIE, Sun Hotjava
Nachteile: funktioniert nur mit NN, MIE, Sun Hotjava spezielle nicht-standardisierte Klassen zu benutzen jeweils wiederum spezielle Software zum Signieren notwendig  am einfachsten, Programm als Applikation zu konzipieren, die sich Benutzer erst herunterladen muss häufig verwendeter Umweg: Datenaustausch via , Cut&Paste Info: Beispiele:

13 2.2 Zugriff auf Dateien eines Internet-Servers
immer möglich: Lesezugriff auf Dateien mit vollständiger URL als Pfad: try{ URL url = new URL("http://somewhere.com/test.txt"); // oder: URL url = new URL( getDocumentBase(), filename); BufferedReader in = new BufferedReader( new InputStreamReader( url.openStream() ) ); String s = in.readLine(); // s = null ==> Stream-Ende ... } catch(MalformedURLException e){ System.out.println("URLException:"+e); } catch(IOException e){ System.out.println("IOException:"+e); }

14 theoretisch analoge Verfahrensweise zum Schreiben in Dateien möglich:
URLConnection connection = url.openConnection(); connection.setDoOutput(true); PrintWriter out = new PrintWriter(connection.getOutputStream()); out.println("Ob das klappt?"); out.close(); Haken: die meisten Server erlauben diese Zugriffsmethode nicht Auswege: Umweg über einen FTP-Server Server lauscht auf einem Socket nach Daten des Applets an CGI-Skript auf dem Server posten Servlet

15 Realisierung mit CGI-Skripts
zu speicherndes / anzuhängendes Dokument über eine URL an ein Skript senden via POST Vorgehen wie im obigen Beispiel: URL-Objekt erstellen. Verbindung zur URL herstellen via URLConnection. URLConnection auf Output-Modus setzen. Output-Stream von URLConnection erhalten  ist Std.-Eingabe für das CGI-Skript hinter der URL 5. Daten auf den Output-Stream schreiben und diesen schließen Beispiel:

16 Realisierung mit Servlets
Servlet: Java-Code, der vom Webserver selbst ausgeführt wird und Anfragen des Clients (z.B. eines Java-Applets) behandeln kann Vorteile gegenüber CGI: Plattformunabhängigkeit allg. OOP-Vorteile Javas Performance (ein Servlet beantwortet alle Client-Anfragen) speziell für uns: vereinfachte Kommunikation (Java  Java) benötigt: Servlets unterstützender Webserver wie z. B. der Java Web Server Infos:

17 Vortrag und Beispiele im Netz:


Herunterladen ppt "Dateizugriffe mit Applikationen 2. Dateizugriffe mit Applets"

Ähnliche Präsentationen


Google-Anzeigen