Dateien

Werbung
Dateien
DVG2 - 05 - Dateien
1
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 - 05 - Dateien
2
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 - 05 - Dateien
3
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)
File (URI uri)
 URI: Uniform Resource Identifier, allgemeine standardisierte
Beschreibung einer Ressource im Internet
 Unterstützung der URIs ist neu ab Version 1.4 .
 Es werden nur URIs unterstützt, die auf lokale allgemein
zugängliche Ressourcen im Filesystem zugreifen.
 Weierentwicklung der URLs (Uniform Resource Locator)
Konstruktoren öffnen die Dateien nicht! Es erfolgt
kein Zugriff zum Filesystems.
DVG2 - 05 - Dateien
4
Statische Methoden der Klasse File


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:\


DVG2 - 05 - Dateien
5
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 - 05 - Dateien
6



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 - 05 - Dateien
7






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 - 05 - Dateien
8












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
URI toURI() // gibt den Filenamen in Form eines URIs aus
DVG2 - 05 - Dateien
9






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 - 05 - Dateien
10
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 - 05 - Dateien
11
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 - 05 - Dateien
12
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 - 05 - Dateien
13
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 - 05 - Dateien
14
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 - 05 - Dateien
15
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 - 05 - Dateien
16
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 - 05 - Dateien
17
Herunterladen