Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Dateiarbeit in Java 1.Dateizugriffe mit Applikationen 2. Dateizugriffe mit Applets."—  Präsentation transkript:

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

2 2 1. Dateizugriffe mit Applikationen hier: nur Zugriff auf lokale Speichermedien Internet-Zugriffe: siehe 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 3 Methoden von File MethodeResultatBedeutung canReadbooleanKann Datei gelesen werden? canWritebooleanKann Datei geschrieben werden? deletebooleanLöscht Datei equalsbooleanVergleicht mit Dateinamen existsbooleanExistiert Datei? isDirectorybooleanIst Datei ein Verzeichnis? lastModifiedlongLetzte Änderung der Datei (ms seit ) lengthlongDateigröße (Bytes) listString[]ggf. Feld mit im Verzeichn. enthaltenen Dateien mkdirbooleanggf. Unterverzeichnis anlegen renameTobooleanBenennt Datei um

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

5 5 1.2Ein- / 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 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 7 FileReader / FileWriter: Nachkommen von InputStreamReader / OutputStreamWriter Filtern mit BufferedReader / PrintWriter möglich - Konstruktion: wie FileInputStream / FileOutputStream - keine neuen Methoden - Bsp: FileTestFileTest 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 8 Verwendung: ObjectInputStream / ObjectOutputStream (Nachfolger von InputStream / OutputStream) -Konstruktoren: verlangen konkreten In- / OutputStream als Argument -Methoden: o flush, writeBoolean, writeByte,... wie bei DataIn- / DataOutputStream o close(): ruft flush auf (nur ObjectOutputStream) und schließt gefilterten Stream o void writeObject(Object o): Objekt serialisieren schreibt alle Variablen (außer Zeiger) des Objektes in Stream durch Zeigervariablen referenzierte Obj. werden wiederum serialisiert o 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 / FrameEinAusPersistFrame FrameEinAus

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

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

11 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 o privater Schlüssel: Unterschreiben des Codes o ö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 12 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 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 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 15 Realisierung mit CGI-Skripts zu speicherndes / anzuhängendes Dokument über eine URL an ein Skript senden via POST Vorgehen wie im obigen Beispiel: 1.URL-Objekt erstellen. 2.Verbindung zur URL herstellen via URLConnection. 3.URLConnection auf Output-Modus setzen. 4.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: dresden.de/~az461978/proseminar/writefile.htmlhttp://www.inf.tu- dresden.de/~az461978/proseminar/writefile.html

16 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: -http://webreview.com/servlets/tutorials.htmlhttp://webreview.com/servlets/tutorials.html -http://www.javasoft.com/docs/books/tutorial/servlets/index.htmlhttp://www.javasoft.com/docs/books/tutorial/servlets/index.html

17 Vortrag und Beispiele im Netz:


Herunterladen ppt "Dateiarbeit in Java 1.Dateizugriffe mit Applikationen 2. Dateizugriffe mit Applets."

Ähnliche Präsentationen


Google-Anzeigen