Advanced   Java   Services File, Files, Paths, Path, FileSystems, FileSystem, FileStore Back Next Up Home


Von File zu Path, zu FileSystem, zu Files und zu Paths

Mit Java 7 wurden die Funktionalitäten des Packages java.io neu strukturiert, überarbeitet, erweitert und teilweise in die Klassen der folgenden Packages übertragen.

Dies betrifft zu einem Großteil die Klasse java.io.File, deren Funktionalitäten von den neuen Klassen java.nio.file.Files, java.nio.file.FileSystem, java.nio.file.FileStore und java.nio.file.Path übernommen worden sind. Hier betrahcten wir zunächst nur wie man die Möglichkeiten der Klasse File in die neuen Klassen transportiert hat.



Übersicht

Man braucht eine Weile, um hier wirklich die Übersicht zu bekommen. Die Pfeile geben hier keinen Vererbung an, sondern symbolisieren Methoden, die von einer Klasse zur anderen führen.

nio-file-diagramm.jpg

Fangen wir mit den FactoryKlassen an.


Die Factoryklassen FileSystems, Files und Paths

Files

Die finale Klasse java.nio.file.Files ist Eine Hilfsklasse mit ausschließlich statischen Methoden. Die meisten dieser Methoden liefern Objekt der Klasse Path zurück, dem Nachfolger der Klasse File. Files übernimmt einen Teil der Methoden aus der Klasse java.io.File. Einen weiteren Teil der Funktionalitäten übernimmt die Implementierung des Interfaces java.nio.file.Path. Weiter unten findet man eine Tabelle, die aufzeigt, wohin die Methoden der Klasse File gewandert sind. Die Klasse Files liefert auch wichtige neue Methoden zum Lesen und Schreiben von Dateien.


FileSystems

Die Klassen FileSystems ist final und besitzt fünf statische Methoden, die jeweils ein Objekt vom Typ FileSystem liefern. Die wichtigste liefert das lokale Dateisystem.

FileSystem fileSystem = FileSystems.getDefault();
System.out.println(fileSystem);  // sun.nio.fs.WindowsFileSystem

Paths

Paths erzeugt Objekte der Klasse Path und besitzt dazu genau zwei statische Methoden.

java.nio.file.Paths    Methoden
Returntyp Name der Methode
static Path
 
get(String first, String... more)
Converts a path string, or a sequence of strings that when joined form a path string, to a Path.
static Path
 
get(URI uri)
Converts the given URI to a Path object.


Von File nach Path und zurück
File file = new File("irgend/ein/pfad/foo.foo");
Path fromFile = file.toPath();
Path path = Paths.get("irgend/ein/pfad/foo.foo");
File file = path.toFile();

Die statische Methode get von Paths ist lediglich ein Shortcut für

Path path2 = FileSystems.getDefault().getPath("irgend/ein/pfad/foo.foo");

oder auch

Path path2 = FileSystems.getDefault().getPath("irgend","ein", "pfad", "/foo.foo");


Wohin sind die Methoden der Klasse File gewandert ?

Die folgende Graphik zeigt eine Übersicht über die Wanderbewegungen. Hier zeigen die Pfeile keine Vererbungen an. Die Details finden sich in den anschließenden Tabellen.

java-nio-file-wanderungen.jpg

Nützlich sind auch die Erläuterungen und die Tabelle auf Legacy File I/O Code von Oracle, auf der die folgenden Tabellen basieren, die die einzelnen Wanderbewegungen zeigen.


Von File nach Files



java.io.Filejava.nio.file.Files
ReturntypName der Methodestatic ReturntypName der Methode
booleancanExecute()booleanisExecutable(Path path)
booleancanRead()booleanisReadable(Path path)
booleancanWrite()booleanisWritable(Path path)
booleancreateNewFile()PathcreateFile(Path path, FileAttribute<?>... attrs)
static FilecreateTempFile(String prefix, String suffix)Path createTempFile(String prefix, String suffix, FileAttribute<?>... attrs)
static FilecreateTempFile(String prefix, String suffix, File directory)Path createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs)
booleandelete()voiddelete(Path path)
void deleteOnExit()voidReplaced by the DELETE_ON_CLOSE option specified in the createFile method
booleanexists()booleanexists(Path path, LinkOption... options)
booleannotExists(Path path, LinkOption... options)
booleanisDirectory()booleanisDirectory(Path path, LinkOption... options)
booleanisFile()booleanisRegularFile(Path path, LinkOption... options)
booleanisHidden()booleanisHidden(Path path)
longlastModified()FileTimegetLastModifiedTime(Path, LinkOption...)
longlength()longsize(Path path)
String[]list()DirectoryStream<Path>newDirectoryStream(Path dir)
File[]listFiles()
String[]list(FilenameFilter filter)DirectoryStream<Path> newDirectoryStream(Path dir, String glob)
oder
newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter)
File[]listFiles(FileFilter filter)
File[]listFiles(FilenameFilter filter)
booleanmkdir()PathcreateDirectory(Path dir, FileAttribute<?>... attrs)
booleanmkdirs()PathcreateDirectories(Path dir, FileAttribute<?>... attrs)
booleanrenameTo(File dest)PathFiles.move(Path source, Path target, CopyOption... options)
booleansetExecutable() booleansetAttribute(Path, String, Object, LinkOption...)
booleansetReadable()
booleansetReadOnly()
booleansetWritable()
booleansetLastModified(long)PathsetLastMOdifiedTime(Path, FileTime)


Von File nach Path

Path ist der eigentliche Nachfolger von File.

java.io.Filejava.nio.file.Path
ReturntypName der MethodeReturntypName der Methode
Filenew File(File parent, String child)Pathresolve(Path child)
Filenew File(String parent, String child)Pathresolve(String child)
intcompareTo(File other)intcompareTo(Path other)
booleanequals(Object ob)booleanequals(Object ob)
FilegetAbsoluteFile()PathtoAbsolutePath(Path path)
StringgetAbsolutePath()
FilegetCanonicalFile()PathtoRealPath(LinkOption... options)
StringgetCanonicalPath()
URItoURI()URItoURI()


Von File nach FileSystem

Ein FileSystem erhält man über die Factoryklasse java.nio.file.FileSystems.

FileSystem fileSystem = FileSystems.getDefault();
java.io.Filejava.nio.file.FileSystem
ReturntypName der MethodeReturntypName der Methode
static File[]listRoots()Iterable<Path>getRootDirectories()


Von File nach FileStore

Es gibt zwei Möglichkeiten zu einem FileStoreobjekt zu kommen. Mit der Klasse Files erhält man den FileStore zu einem Pathobjekt.

FileStore fileStore = Files.getFileStore(Path path);

Man kann sich auch alle Store zu einem FileSystem holen.

Iterable<FileStore> fileStore = FileSystems.getDefault().getFileStores();
java.io.Filejava.nio.file.FileStore
ReturntypName der MethodeReturntypName der Methode
longgetTotalSpace()longgetTotalSpace()
longgetFreeSpace()longgetUnallocatedSpace()
longgetUsableSpace()longgetUsableSpace()

Valid XHTML 1.0 Strict top Back Next Up Home