Dateien

17
DVG2 - 07 - Dateien Dateien

description

Dateien. Die Klasse File. Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem JAVA-Programm her. Das Filesystem enthält als Objekte Devices, Verzeichnisse und Dateien. Sie werden durch ihre Namen eindeutig gekennzeichnet. Die Klasse File : - PowerPoint PPT Presentation

Transcript of Dateien

Page 1: Dateien

DVG2 - 07 - Dateien

Dateien

Page 2: Dateien

DV

G2 - 07 - D

ateien

2

Die Klasse File

Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem JAVA-Programm her.

Das Filesystem enthält als Objekte Devices, Verzeichnisse und Dateien. Sie werden durch ihre Namen eindeutig gekennzeichnet.

Die Klasse File:– Bildet Objekte des Filesystems auf Instanzen der Klasse File

ab.– Stellt die Verbindung zwischen Datei und Dateinamen her.– Ermöglicht das Lesen von Verzeichnissen.– Ermöglicht das Lesen von Attributen von Dateien und

Verzeichnissen.– Ermöglicht das Erzeugen, Löschen, Umbenennen und

Modifizieren von Dateien und Verzeichnissen.– Stellt eine vom Betriebsystem unabhängige Schnittstelle zur

Verfügung.

Page 3: Dateien

DV

G2 - 07 - D

ateien

3

Attribute der Klasse File

static String pathSeparator– liefert die Zeichenkette, die Pfadeinträge im PATH trennt– UNIX : ":"– WINDOWS: ";"

static char pathSeparatorChar– das gleiche als Zeichen

static String separator– liefert die Zeichenkette, die Verzeichnisse im Pfad trennt – UNIX : "/"– WINDOWS: "\\"

static char separatorChar– das gleiche als Zeichen

Page 4: Dateien

DV

G2 - 07 - D

ateien

4

Konstruktoren der Klasse File

File (String pathname)– erzeugt ein File-Objekt mit pathname als Pfad

File (String parent, String child)– erzeugt ein File-Objekt mit einem Pfad child ggf. relativ zu parent

File (File parent, String child) Konstruktoren öffnen die Dateien nicht! Es erfolgt

kein Zugriff zum Filesystems.

Page 5: Dateien

DV

G2 - 07 - D

ateien

5

Statische Methoden der Klasse File

static File createTempFile(String prefix,String suffix, File directory)

static File createTempFile(String prefix,String suffix) – erzeugen temporäres File mit dem Namen:prefix....suffix im Standard-Verzeichnis für temporäre Dateien bzw. im Verzeichnis directory

static File [] listRoots()– erzeugt ein Feld von File-Objekten, die auf die

Wurzelverzeichnisse zeigen, z.B.: Windows: A:\ C:\ D:\

Page 6: Dateien

DV

G2 - 07 - D

ateien

6

Methoden der Klasse File

boolean canRead() // Test ob Datei lesbar ist boolean canWrite() // Test ob Datei schreibbar ist boolean exists() // Test ob Datei existiert boolean isAbsolute() // Test ob Pfad absolut ist boolean isDirectory() // Test ob File ein Verzeichnis ist boolean isFile() // Test ob File eine Datei ist boolean isHidden() // Test ob Datei versteckt ist long lastModified() // Zeit der letzten Modifikation in

Millisekunden seit 1.1.1970 0.00 GMT boolean setLastModified(long time) // setzt Zeit der

letzten Modifikation boolean setReadOnly() // setzt das File auf ReadOnly

Page 7: Dateien

DV

G2 - 07 - D

ateien

7

int compareTo(File pathname)vergleicht die Pfadnamen unter Berücksichtigung der Eigenschaften des Filesystems (z.B.: Groß- und Kleinschreibung)– f1.compareTo(f2) == 0 wenn Pfadnamen gleich– f1.compareTo(f2) < 0 wenn Pfadnamen von f1 vor f2– f1.compareTo(f2) > 0 wenn Pfadnamen von f1 nach f2

int compareTo(Object o)File implementiert Comparable

boolean equals (Object o)– f1.equals(f2) == true wenn Pfadnamen gleich

Page 8: Dateien

DV

G2 - 07 - D

ateien

8

boolean createNewFile() // erzeugt eine neue leere Datei, falls sie noch nicht existiert

boolean delete() // löscht das File void deleteOnExit() // löscht das File nach dem Ende des

Programms boolean mkdir() // erzeugt ein neues Verzeichnis boolean mkdirs() // erzeugt ein neues Verzeichnis incl. aller

erforderlichen Zwischenverzeichnisse boolean renameTo(File dest) // benennt eine Datei um

Page 9: Dateien

DV

G2 - 07 - D

ateien

9

File getAbsoluteFile() // gibt das File mit absolutem Pfadnamen aus

String getAbsolutePath() // gibt den absoluten Filenamen aus

File getCanonicalFile() // gibt das File mit kanonischem Pfadnamen aus

String getCanonicalPath() String getName() // gibt den evtl. relativen Filenamen aus String getParent() // gibt das Elternverzeichnis aus File getParentFile() String getPath() long length() // gibt die Länge der Datei aus String toString() // wie getName() URL toURL() // gibt den Filenamen in Form eines URLs aus

Page 10: Dateien

DV

G2 - 07 - D

ateien

10

int hashCode() String [] list() // gibt eine Liste aller in der Datei

enthaltenen Dateien und Unterverzeichnisse aus String [] list(FilenameFilter filter) File [] listFiles() File [] listFiles(FileFilter filter) File [] listFiles(FilenameFilter filter)

Page 11: Dateien

DV

G2 - 07 - D

ateien

11

Das Interface FileFilter

Mit Hilfe einer Implementation des Interfaces FileFilter kann in der listFiles-Methode der Klasse File eine Auswahl der auszugebenden File-Objekte getroffen werde.

Einzige zu implementierende Methode:public boolean accept(File pathname)gibt true zurück, wenn das File-Objekt ausgewählt werden soll und false sonst

Page 12: Dateien

DV

G2 - 07 - D

ateien

12

Das Interface FileNameFilter

Mit Hilfe einer Implementation des Interfaces FileNameFilter kann in der list- und der listFiles-Methode der Klasse File eine Auswahl der auszugebenden File-Objekte getroffen werde.

Einzige zu implementierende Methode:public boolean accept(File dir, String name) gibt true zurück, wenn das File-Objekt ausgewählt werden soll und false sonst

Page 13: Dateien

DV

G2 - 07 - D

ateien

13

Beispiel: Verzeichnisinhalt anzeigenimport java.io.*;

public class Dir {

public static void main (String [] args) throws IOException {

String dName = (args.length>0?args[0]:".");

File d = new File(dName);

if ( d.exists() ) {

file(d);

if (d.isDirectory()) dir(d);

}

else

System.err.println("File "+dName+" existiert nicht!");

}

Page 14: Dateien

DV

G2 - 07 - D

ateien

14

static void file(File d) {

System.out.println((d.canRead()?"R":" ")+

(d.canWrite()?"W":" ")+

(d.isHidden()?"H":" ")+(d.isDirectory()?"D":"")+

(d.isFile()?"F":"")+" : "+d.length()+"\t"+

" : "+(new java.util.Date(d.lastModified()))+" : "+d);

}

static void dir(File d){

System.out.println("Verzeichnis : "+d);

File [] files = d.listFiles();

for (int i=0;i<files.length;i++) file(files[i]);

for (int i=0;i<files.length;i++)

if (files[i].isDirectory()) dir(files[i]);

}

}

Page 15: Dateien

DV

G2 - 07 - D

ateien

15

Beispiel: Verzeichnisinhalt mit Filter anzeigenimport java.io.*;

public class DirF {

public static void main (String [] args) throws IOException {

String dName = (args.length>0?args[0]:".");

File d = new File(dName);

Filter fil = (args.length>1?new Filter(args[1]):null);

if ( d.exists() ) {

file(d);

if (d.isDirectory()) dir(d, fil);

}

else

System.err.println("File "+dName+" existiert nicht!");

}

Page 16: Dateien

DV

G2 - 07 - D

ateien

16

static void file(File d) {

System.out.println((d.canRead()?"R":" ")+

(d.canWrite()?"W":" ")+

(d.isHidden()?"H":" ")+(d.isDirectory()?"D":"")+

(d.isFile()?"F":"")+" : "+d.length()+"\t"+

" : "+(new java.util.Date(d.lastModified()))+" : "+d);

}

static void dir(File d, Filter fil){

System.out.println("Verzeichnis : "+d);

File [] files = d.listFiles(fil);

for (int i=0;i<files.length;i++) file(files[i]);

for (int i=0;i<files.length;i++)

if (files[i].isDirectory()) dir(files[i], fil);

}

Page 17: Dateien

DV

G2 - 07 - D

ateien

17

static class Filter implements FileFilter {

private String match;

Filter (String match) {

this.match=match;

}

public boolean accept (File f) {

if (f.isDirectory()) return true;

try {

return f.getCanonicalPath().indexOf(match)>=0;

}

catch (Exception e) {}

return false;

}

}

}