Dateien

Werbung
Dateien
DVG2 - 07 - Dateien
Die Klasse File

DVG2 - 07 - Dateien
2


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.
Attribute der Klasse File
DVG2 - 07 - Dateien

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


3
– UNIX : "/"
– WINDOWS: "\\"
static char separatorChar
– das gleiche als Zeichen
Konstruktoren der Klasse File

DVG2 - 07 - Dateien
4



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.
Statische Methoden der Klasse File

DVG2 - 07 - Dateien
5


static
String
static
String
File createTempFile(String prefix,
suffix, File directory)
File createTempFile(String prefix,
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:\
Methoden der Klasse File


DVG2 - 07 - Dateien








6
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


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

DVG2 - 07 - Dateien





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

DVG2 - 07 - Dateien










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


DVG2 - 07 - Dateien
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)
Das Interface FileFilter

DVG2 - 07 - Dateien
11

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
Das Interface FileNameFilter

DVG2 - 07 - Dateien
12

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
Beispiel: Verzeichnisinhalt anzeigen
import java.io.*;
public class Dir {
DVG2 - 07 - Dateien
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!");
}
13
static void file(File d) {
System.out.println((d.canRead()?"R":" ")+
(d.canWrite()?"W":" ")+
DVG2 - 07 - Dateien
(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]);
}
}
14
Beispiel: Verzeichnisinhalt mit Filter anzeigen
import java.io.*;
public class DirF {
DVG2 - 07 - Dateien
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!");
}
15
static void file(File d) {
System.out.println((d.canRead()?"R":" ")+
(d.canWrite()?"W":" ")+
DVG2 - 07 - Dateien
(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);
}
16
static class Filter implements FileFilter {
private String match;
DVG2 - 07 - Dateien
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;
}
}
}
17
Herunterladen