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 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 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 1.1.1970) 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(781.0352f); 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 Email, Cut&Paste Info: http://www.suitable.com/Doc_CodeSigning.shtml http://www.suitable.com/Doc_CodeSigning.shtml Beispiele: http://www.brookscole.com/compsci/aeonline/course/7/2/index.html

13 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 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: http://www.inf.tu- 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: http://www.inf.tu-dresden.de/~az461978/proseminar.html/


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

Ähnliche Präsentationen


Google-Anzeigen