Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Java 7 Grundkurs

Mit Dateien arbeiten, Dateiinhalte lesen und schreiben: "Files"

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Klasse "Files" bietet jede Menge Möglichkeiten, um Dateien zu manipulieren. Sehen Sie in diesem Beispiel und der Dokumentation, welche vielfältigen Methoden für Sie bereits zur Verfügung stehen.
05:25

Transkript

Schauen wir uns an, wie sich Dateien im Dateisystem manipulieren lassen. Zu diesem Zweck gibt es die Klasse "Files". Diese Klasse bietet Methoden für alles, was man mit Dateien so machen können wollte. Zum Kopieren von Dateien, zum Verschieben von Dateien, Umbenennen, Erzeugen und Löschen von Dateien. Der Zugriff auf Dateiattribute ist genauso möglich wie das Einlesen ganzer Dateiinhalte in einem Rutsch. Für die Repräsentation von Dateien und Verzeichnissen wird dabei immer das Interface "Path" verwendet, und für das initiale Zusammenbauen von Pfaden, die auf Dateien oder Verzeichnisse verweisen sollen, gibt es eine Hilfsklasse, die eine passende Methode "get" hat. Dieser "get"-Methode gebe ich einfach die Teile meines Pfades hintereinander weg, durch Komma getrennt, und dann bekomme ich ein passendes Pfadobjekt zurück. Für dieses Beispiel habe ich hier mal zwei Pfade konstruiert. Einer heißt "quelle", und einer heißt "ziel", und so, wie das hier steht, würde das jetzt bedeuten, es gibt ein Verzeichnis "Pfad", darin gibt es ein Unterverzeichnis "zur", und darin gibt es dann eine Datei, die heißt "Quelldatei", und eine zweite Datei, die heißt "Zieldatei". Die Dateitypen sind dabei völlig uninteressant. Das können Textdateien sein, es können auch Binärdateien sein, also JPEG-Bilder zum Beispiel, entscheidend ist nur, dass es Dateien sind. "quelle" repräsentiert jetzt also den Pfad zur Quelldatei, und "ziel" repräsentiert den Pfad zur Zieldatei. Möchte ich nun zum Beispiel eine Datei kopieren, dann gibt es dafür die Methode "Copy" in der Klasse "Files". Ich gebe einfach Quelle und Ziel an, und dann wird die Datei kopiert. Das funktioniert aber standardmäßig nur, wenn die Zieldatei noch nicht existiert. Möchte ich eine eventuell existierende Zieldatei einfach überschreiben, dann kann ich hier einfach noch eine zusätzliche Option angeben, nämlich "REPLACE_EXISTING". Nach dem erfolgreichen Kopieren einer Datei habe ich die Datei zweimal, möchte ich sie hingegen verschieben, dann gibt es dafür die Methode "move". Auch hier gebe ich einfach Quelle und Ziel an, und die Datei wird verschoben. Es lassen sich aber nicht nur Dateien anlegen, sondern auch Verzeichnisse und ganze Verzeichnisbäume. Um ein Verzeichnis mit Unterverzeichnissen erstellen zu können, muss ich mir zuerst den entsprechenden Pfad zusammenbauen. Also hier, ein Verzeichnis, das heißt "verzeichnis", darin gibt es ein Unterverzeichnis, das heißt "und" und darin gibt es noch ein Unterverzeichnis, das heißt dann "unterverzeichnis". Diesen Pfad, den ich hier bekomme, gebe ich dann an die Methode "createDirectories", und diese Methode sorgt dafür, dass dieser gesamte Baum erzeugt wird. Über die Methoden der Klasse "Files" kann ich also Dateien und Verzeichnisse manipulieren, aber ich komme auch an die Inhalte der Dateien heran. Schauen wir uns an, wie das aussieht, wenn wir eine Textdatei zum Lesen öffnen möchten und dann etwas daraus lesen. Zuerst brauche ich natürlich wieder den Pfad zu dieser Textdatei. Den kann ich mir zum Beispiel hier direkt zusammenbauen. Mit diesem Pfad gehe ich nun zur Methode "newBufferedReader", und als zweiten Parameter muss ich noch angeben, welcher Zeichensatz verwendet werden soll beim Einlesen dieser Datei. Ich habe hier UTF-8 angegeben, das könnte aber genauso gut auch ISO 8859-15 oder auch CP-1252 sein. Diese Methode "newBufferedReader" gibt mir dann, wie der Name ja auch schon andeutet, einen buffered reader zurück, also einen gepufferten Leser. Der verwaltet intern einen kleinen Puffer, damit er nicht bei jedem einzelnen Lesevorgang aus meiner Anwendung immer auf die Datei zugreifen muss. Außerdem bietet er mir eine Methode, die heißt "readLine", und damit kann ich einfach immer die nächste Zeile aus der Textdatei holen und die zum Beispiel hier in einer String-Variablen merken. So kann ich jetzt nach und nach die einzelnen Zeilen der Datei einlesen und damit machen, was auch immer ich damit machen möchte. Am Ende muss ich diese nur wieder auf jeden Fall noch schließen, damit die verwendeten Ressourcen wieder freigegeben werden. Das Schreiben in einer Textdatei läuft nun völlig analog. Ich brauche auch hier wieder einen Pfad, den ich mir zusammenbauen kann, und die Methode von "Files", die ich jetzt aufrufe, heißt "newBufferedWriter", denn ich möchte ja schreiben. Ich übergebe den Pfad und ich übergebe wieder meinen Zeichensatz, und dann bekomme ich einen solchen Writer zurück. Der hat nun eine Methode "write", mit der ich einen beliebigen Text in die Datei reinschreiben kann, und es gibt eine Methode "newLine", wenn ich einen Zeilenvorschub einfügen möchte. Habe ich alles geschrieben, was ich schreiben möchte, dann natürlich auch hier wieder "close" aufrufen, damit die Ressourcen freigegeben werden, und insbesondere damit der buffered writer seinen Buffer auch tatsächlich noch in die Datei schreibt. Wie vorhin bereits erwähnt, bietet die Klasse "Files" natürlich noch einiges mehr. Möchten Sie beispielsweise den Inhalt einer kompletten Textdatei zeilenweise in eine Liste aus Strings einlesen, dann gibt es auch dafür eine Methode, und zwar heißt die "readAllLines". Hier. Sie geben einfach den Pfad zur Datei an, den zu verwendenden Zeichensatz, und dann bekommen Sie eine Liste aus Strings zurück. Für Binärdateien heißt diese Methode dann analog "readAllBytes", da brauchen wir keinen Zeichensatz, und wir bekommen einen Byte Array zurück. In die Gegenrichtung funktioniert das natürlich auch. Da heißt die Methode einfach nur "write". Geben Sie ein "write" ein Byte Array, dann wird eine Binärdatei erzeugt, und wenn Sie Text zu schreiben haben, dann nehmen Sie diese zweite Methode hier. Das sieht ein bisschen kompliziert aus, heißt aber nichts anderes, als dass Sie zum Beispiel eine Liste aus Strings übergeben können. Dann wird durch diese Liste durchiteriert, jeder einzelne String rausgenommen und als einzelne Zeile in die Datei geschrieben. Wenn Sie in Ihren Programmen irgendetwas mit Dateien machen möchten, dann sollten Sie auf jeden Fall auch immer hier einen Blick reinwerfen. Möglicherweise gibt es hier schon eine fertige Lösung.

Java 7 Grundkurs

Machen Sie sich mit den Grundlagen der Java-Programmierung vertraut und lernen Sie die Syntax der Sprache sowie das Konzept der objektorientierten Softwareentwicklung kennen.

8 Std. 32 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!