---
title: 'Files: Einfaches Einlesen und Schreiben von Dateien'
url: 'https://www.tutego.de/blog/javainsel/2018/09/files-einfaches-einlesen-und-schreiben-von-dateien'
markdown: 'https://www.tutego.de/blog/javainsel/2018/09/files-einfaches-einlesen-und-schreiben-von-dateien.md'
date: '2018-09-11'
description: 'Mit den Methoden readAllBytes(…), readAllLines(…), readString(…), lines(…)und write(…) und writeString(..) kann Files einfach einen Dateiinhalt einlesen oder Strings bzw. ein Byte-Feld schreiben. URI uri = ListAllLines.class.getResource( "/lyrics.txt" ).toURI(); Path p = Paths.get( uri ); System.ou…'
taxonomy:
  category:
    - Insel
    - 'Java 11'
    - 'Java 7'
---

# Files: Einfaches Einlesen und Schreiben von Dateien

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Files: Einfaches Einlesen und Schreiben von Dateien

11.09.2018 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Mit den Methoden `readAllBytes(…)`, `readAllLines(…)`, `readString(…)`, `lines(…)`und `write(…)` und `writeString(..)` kann `Files` einfach einen Dateiinhalt einlesen oder Strings bzw. ein Byte-Feld schreiben.

```java
URI uri = ListAllLines.class.getResource( "/lyrics.txt" ).toURI();
Path p = Paths.get( uri );
System.out.printf( "Datei '%s' mit Länge %d Byte(s) hat folgende Zeilen:%n",
p.getFileName(), Files.size( p ) );
int lineCnt = 1;
for ( String line : Files.readAllLines( p ) )
System.out.println( lineCnt++ + ": " + line );
```

final class `java.nio.file.Files`

- staticbyte\[\]`readAllBytes(Pathpath)``throwsIOException`Liest die Datei komplett in ein Byte-Feld ein.
- `staticList`<`String`>`readAllLines(Pathpath)``throwsIOException`
- `staticList`<`String`>`readAllLines(Pathpath,Charsetcs)``throwsIOException`Liest die Datei Zeile für Zeile ein und liefert eine Liste dieser Zeilen. Optional ist die Angabe einer Kodierung, standardmäßig ist es UTF\_8.
- `static String readString(Path path) throws IOException`
- `static String readString(Path path, Charset cs) throws IOException`Liest eine Datei komplett aus und liefert den Inhalt als String. Ohne Kodierung gilt standardmäßig UTF-8. Beide Methoden neu in Java 11.
- `staticPathwrite`(Pathpath,byte\[\]bytes,..options)`throwsIOException`Schreibt ein Byte-Array in eine Datei.
- `staticPathwrite`(Pathpath,`Iterable`<?`extendsCharSequence`>lines,.. options) throws IOException
- `staticPathwrite`(Pathpath,`Iterable`<?`extendsCharSequence`>lines,Charsetcs, .. options) throws IOException Schreibt alle Zeilen aus dem Iterable in eine Datei. Optional ist die Kodierung, die StandardCharsets.UTF\_8 ist, so nicht anders angegeben.
- `static Path writeString(Path path, CharSequence csq, OpenOption… options) throws IOException`
- `static Path writeString(Path path, CharSequence csq, Charset cs, OpenOption… options) throws IOException`Schreibt eine Zeichenfolge in die genannte Datei. Der übergebene path wird zurückgegeben. Ohne Kodierung gilt standardmäßig UTF-8. Beide Methoden neu in Java 11.

Die Aufzählung OpenOption ist ein Vararg, und daher sind Argumente nicht zwingend nötig. StandardOpenOption ist eine Aufzählung vom Typ OpenOption mit Konstanten wie APPEND, CREATE usw.

Beispiel: Lies eine UTF-8-kodierte Datei ein:

```java
String s = Files.readString( path );
```

Bevor die praktische Methode in Java 11 einzog, sah eine Alternative so aus:

```java
String s = new String( Files.readAllBytes( path ), StandardCharsets.UTF_8 );
```

Hinweis: Auch wenn es naheliegt, die `Files`-Methode zum Einlesen mit einem Path-Objekt zu füttern, das einen HTTP-`URI` repräsentiert, funktioniert dies nicht. So liefert schon die erste Zeile des Programms eine Ausnahme des Typs »`java.nio.file.FileSystemNotFoundException`: Provider ›http‹ not installed«.

`URI` uri = new `URI`( „<http://tutego.de/javabuch/aufgaben/bond.txt>“ );

```java
Path path = Paths.get( uri ); //
List<String> content = Files.readAllLines( path );
System.out.println( content );
```

Vielleicht kommt in der Zukunft ein Standard-Provider von Oracle, doch es ist davon auszugehen, dass quelloffene Lösungen diese Lücke schließen werden. Schwer zu programmieren sind Dateisystem-Provider nämlich nicht.

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/), [Java 11](https://www.tutego.de/blog/javainsel/category/java-11/), [Java 7](https://www.tutego.de/blog/javainsel/category/java-7/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Prädikate aus java.util.regex.Pattern](https://www.tutego.de/blog/javainsel/2018/09/praedikate-aus-java-util-regex-pattern.md)
- Next: [Mit ByteArrayOutputStream in ein Byte-Feld schreiben](https://www.tutego.de/blog/javainsel/2018/09/bytearrayoutputstream-writebytes.md)
