170 likes | 307 Views
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 :
E N D
Dateien DVG2 - 07 - 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: • 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. DVG2 - 07 - Dateien
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 DVG2 - 07 - Dateien
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. DVG2 - 07 - Dateien
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:\ DVG2 - 07 - Dateien
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 DVG2 - 07 - Dateien
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 DVG2 - 07 - Dateien
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 DVG2 - 07 - Dateien
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 DVG2 - 07 - Dateien
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) DVG2 - 07 - Dateien
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 DVG2 - 07 - Dateien
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 DVG2 - 07 - Dateien
Beispiel: Verzeichnisinhalt anzeigen import 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!"); } DVG2 - 07 - Dateien
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]); } } DVG2 - 07 - Dateien
Beispiel: Verzeichnisinhalt mit Filter anzeigen import 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!"); } DVG2 - 07 - Dateien
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); } DVG2 - 07 - Dateien
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; } } } DVG2 - 07 - Dateien