Es ist vielleicht nicht einmal der erste Schritt, aber ich werde es nach und nach tun. 2019/04/19 Ein wenig aktualisiert.
input_01.csv
"ID","Klasse","Name"
"0001","Säbel","Altria"
"0002","Zaubernden","Medien"
"0003","Berserker","Herkules"
input_02.csv
"ID","Schiffstyp","Name"
"0001","Schlachtschiff","Nagato"
"0002","ein leichter Kreuzer","Abukuma"
"0003","Zerstörer","Hitze-Dunst"
FileInOutFirst.java
package com.otamesi;
import java.io.BufferedReader;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
public class FileInOutFirst{
/**
*Die erste Files-Klasse.
*
*/
public static void main(String args[]) throws Exception{
FileInOutFirst fileInOutFirst = new FileInOutFirst();
fileInOutFirst.inOut01();
fileInOutFirst.inOut02();
fileInOutFirst.inOut03();
fileInOutFirst.inOut04();
fileInOutFirst.inOut05();
}
/**
*Teil 1.<br>
*Versuchen Sie vorerst, auf Standardausgabe auszugeben.
*
*/
private void inOut01() throws Exception {
//SJIS-Datei lesen
List<String> input = Files.readAllLines(Paths.get("D:/", "input_01.csv"), Charset.forName("SJIS"));
System.out.println("Teil 1");
input.forEach(line -> System.out.println(line));
}
/**
*Teil 2.<br>
*Versuchen Sie vorerst, auf Standardausgabe auszugeben(UTF-8)。
*
*/
private void inOut02() throws Exception {
//UTF-Lesen Sie 8 Dateien
List<String> input = Files.readAllLines(Paths.get("D:/", "input_02.csv"), StandardCharsets.UTF_8);
System.out.println("Teil 2");
input.forEach(line -> System.out.println(line));
}
/**
*Teil 3.<br>
*Versuchen Sie vorerst, auf Standardausgabe auszugeben(UTF-8)。
*
*/
private void inOut03() throws Exception {
//UTF-Lesen Sie 8 Dateien
List<String> input = Files.readAllLines(Paths.get("D:/", "input_03.csv"), StandardCharsets.UTF_8);
System.out.println("Teil 3");
input.forEach(System.out::println);
}
/**
*Teil 4.<br>
*Versuchen Sie vorerst, auf Standardausgabe auszugeben(UTF-8)。
*
*/
private void inOut04() throws Exception {
//UTF-Lesen Sie 8 Dateien
List<String> input = Files.readAllLines(Paths.get("D:/", "input_03.csv"), StandardCharsets.UTF_8);
List<String> input2 = new ArrayList<String>();
System.out.println("Teil 4");
input.forEach(input2::add);
input2.forEach(System.out::println);
}
/**
*Teil 5.<br>
*Verwenden Sie newBufferedReader(Für große Dateien)
*
*/
private void inOut05() throws Exception {
System.out.println("Teil 5");
Path file = Paths.get("D:/", "input_03.csv");
try (BufferedReader br = Files.newBufferedReader(file, StandardCharsets.UTF_8)) {
String text;
while ((text = br.readLine()) != null) {
System.out.println(text);
}
}
}
}
Teil 1 "ID", "Klasse", "Name" "0001", "Sabre", "Altria" "0002", "Caster", "Media" "0003", "Berserker", "Herkules" Teil 2 "ID", "Schiffstyp", "Name" "0001", "Schlachtschiff", "Nagato" "0002", "Light Cruiser", "Abukuma" "0003", "Zerstörer", "Dunst"
Dies ist die erste forEach-Methode, aber Sie können eine Schleife sehr ordentlich schreiben! Die Codierung ist auch praktisch, da Konstanten vorbereitet werden (leider scheint es kein SJIS zu geben).
Wenn Sie als Parameter einen anderen Zeichencode als den Zeichencode der Datei angeben, Die folgende Ausnahme tritt auf. Möglicherweise haben Sie die Möglichkeit, darauf zu stoßen. Denken wir also daran ...
Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1
at java.nio.charset.CoderResult.throwException(CoderResult.java:281)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:161)
at java.io.BufferedReader.readLine(BufferedReader.java:324)
at java.io.BufferedReader.readLine(BufferedReader.java:389)
at java.nio.file.Files.readAllLines(Files.java:3205)