{"id":4228,"date":"2018-09-11T12:00:24","date_gmt":"2018-09-11T10:00:24","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=4228"},"modified":"2018-09-11T12:00:24","modified_gmt":"2018-09-11T10:00:24","slug":"files-einfaches-einlesen-und-schreiben-von-dateien","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2018\/09\/files-einfaches-einlesen-und-schreiben-von-dateien\/","title":{"rendered":"Files: Einfaches Einlesen und Schreiben von Dateien"},"content":{"rendered":"<p>Mit den Methoden readAllBytes(\u2026), readAllLines(\u2026), readString(\u2026), lines(\u2026)und write(\u2026) und writeString(..) kann Files einfach einen Dateiinhalt einlesen oder Strings bzw. ein Byte-Feld schreiben.<\/p>\n<p>URI uri = ListAllLines.class.getResource( &#8222;\/lyrics.txt&#8220; ).toURI();<br \/>\nPath p = Paths.get( uri );<br \/>\nSystem.out.printf( &#8222;Datei &#8218;%s&#8216; mit L\u00e4nge %d Byte(s) hat folgende Zeilen:%n&#8220;,<br \/>\np.getFileName(), <strong>Files.size( p )<\/strong> );<br \/>\nint lineCnt = 1;<br \/>\nfor ( String line : Files.readAllLines( p ) )<br \/>\nSystem.out.println( lineCnt++\u00a0+ &#8222;: &#8220;\u00a0+ line );<\/p>\n<p>final class java.nio.file.Files<\/p>\n<ul>\n<li>staticbyte[]readAllBytes(Pathpath)throwsIOException<br \/>\nLiest die Datei komplett in ein Byte-Feld ein.<\/li>\n<li>staticList&lt;String&gt;readAllLines(Pathpath)throwsIOException<\/li>\n<li>staticList&lt;String&gt;readAllLines(Pathpath,Charsetcs)throwsIOException<br \/>\nLiest die Datei Zeile f\u00fcr Zeile ein und liefert eine Liste dieser Zeilen. Optional ist die Angabe einer Kodierung, standardm\u00e4\u00dfig ist es UTF_8.<\/li>\n<li>static String readString(Path path) throws IOException<\/li>\n<li>static String readString(Path path, Charset cs) throws IOException<br \/>\nLiest eine Datei komplett aus und liefert den Inhalt als String. Ohne Kodierung gilt standardm\u00e4\u00dfig UTF-8. Beide Methoden neu in Java 11.<\/li>\n<li>staticPathwrite(Pathpath,byte[]bytes,..options)throwsIOException<br \/>\nSchreibt ein Byte-Array in eine Datei.<\/li>\n<li>staticPathwrite(Pathpath,Iterable&lt;?extendsCharSequence&gt;lines,..<br \/>\noptions) throws IOException<\/li>\n<li>staticPathwrite(Pathpath,Iterable&lt;?extendsCharSequence&gt;lines,Charsetcs,<br \/>\n.. options) throws IOException<br \/>\nSchreibt alle Zeilen aus dem Iterable in eine Datei. Optional ist die Kodierung, die StandardCharsets.UTF_8 ist, so nicht anders angegeben.<\/li>\n<li>static Path writeString(Path path, CharSequence csq, OpenOption&#8230; options) throws IOException<\/li>\n<li>static Path writeString(Path path, CharSequence csq, Charset cs, OpenOption&#8230; options) throws IOException<br \/>\nSchreibt eine Zeichenfolge in die genannte Datei. Der \u00fcbergebene path wird zur\u00fcckgegeben. Ohne Kodierung gilt standardm\u00e4\u00dfig UTF-8. Beide Methoden neu in Java 11.<\/li>\n<\/ul>\n<p>Die Aufz\u00e4hlung OpenOption ist ein Vararg, und daher sind Argumente nicht zwingend n\u00f6tig. StandardOpenOption ist eine Aufz\u00e4hlung vom Typ OpenOption mit Konstanten wie APPEND, CREATE usw.<\/p>\n<p>Beispiel:\u00a0Lies eine UTF-8-kodierte Datei ein:<\/p>\n<p>String s = Files.readString( path );<\/p>\n<p>Bevor die praktische Methode in Java 11 einzog, sah eine Alternative so aus:<\/p>\n<p>String s = new String( Files.readAllBytes( path ), StandardCharsets.UTF_8 );<\/p>\n<p>Hinweis: Auch wenn es naheliegt, die Files-Methode zum Einlesen mit einem Path-Objekt zu f\u00fcttern, das einen HTTP-URI repr\u00e4sentiert, funktioniert dies nicht. So liefert schon die erste Zeile des Programms eine Ausnahme des Typs \u00bbjava.nio.file.FileSystemNotFoundException: Provider \u203ahttp\u2039 not installed\u00ab.<\/p>\n<p>URI uri = new URI( &#8222;http:\/\/tutego.de\/javabuch\/aufgaben\/bond.txt&#8220; );<br \/>\nPath path = Paths.get( uri );\u00a0\u00a0\u00a0\u00a0 \/\/<br \/>\nList&lt;String&gt; content = Files.readAllLines( path );<br \/>\nSystem.out.println( content );<\/p>\n<p>Vielleicht kommt in der Zukunft ein Standard-Provider von Oracle, doch es ist davon auszugehen, dass quelloffene L\u00f6sungen diese L\u00fccke schlie\u00dfen werden. Schwer zu programmieren sind Dateisystem-Provider n\u00e4mlich nicht.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit den Methoden readAllBytes(\u2026), readAllLines(\u2026), readString(\u2026), lines(\u2026)und write(\u2026) und writeString(..) kann Files einfach einen Dateiinhalt einlesen oder Strings bzw. ein Byte-Feld schreiben. URI uri = ListAllLines.class.getResource( &#8222;\/lyrics.txt&#8220; ).toURI(); Path p = Paths.get( uri ); System.out.printf( &#8222;Datei &#8218;%s&#8216; mit L\u00e4nge %d Byte(s) hat folgende Zeilen:%n&#8220;, p.getFileName(), Files.size( p ) ); int lineCnt = 1; for ( [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11,108,5],"tags":[],"class_list":["post-4228","post","type-post","status-publish","format-standard","hentry","category-insel","category-java-11","category-java-7"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/4228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=4228"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/4228\/revisions"}],"predecessor-version":[{"id":4229,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/4228\/revisions\/4229"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=4228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=4228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=4228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}