所以我得到了 Konto 的 Java 类,它得到了:
private String navn;
private int medlemdsnummer;
private String årstal;
private String måned;
private String dag;
LocalDate localDate;
它们是这样使用的:
ArrayList<Konto> kontoArrayList = new ArrayList<>();
然后我在程序关闭前将我的 ArrayList 保存到一个 .txt 文档中:
private static void saveToFile(ArrayList<Konto> kontoArrayList) throws IOException {
String content = new String(Files.readAllBytes(Paths.get("medlemmer.txt")));
PrintStream printStream = new PrintStream("medlemmer.txt");
for (int i = 0; i < kontoArrayList.size(); i++) {
printStream.println(content + kontoArrayList.get(i).getMedlemdsnummer() + ": " + kontoArrayList.get(i).getNavn() + " " +
kontoArrayList.get(i).getLocalDate());
}
}
它们最终在 .txt 文件中看起来像这样:
1: Kasper 1996-11-20
2: Jonas 1996-04-27
3: Jesper 1996-05-14
好的,到目前为止一切顺利。现在的问题是:当程序打开时,我想让它能够从头加载 .txt 文件并将其“传输”到 Konto 的 ArrayList。这样我以后就可以使用我的方法(addNewMember)。我在网上看到了很多例子,但他们都使用:
ArrayList<String> somename = new ArrayList<String>();
我想使用:
ArrayList<Konto> konto = new ArrayList<Konto>();
这可能吗,如果可以怎么办? 如果不是我可以做什么呢?
提前致谢,维克多。
最佳答案
您可以将文件中的所有行作为字符串读取,并用空格分隔这些字符串。 然后通过选项解析创建新对象。 像这样:
List<String> strings = Files.readAllLines(Paths.get("test.txt"));
List<Konto> kontos = new ArrayList<>();
for (String string : strings) {
String[] data = string.split(" ");
kontos.add(new Konto(data[1], new Date(data[2])));
}
或者使用Stream
:
List<Konto> kontos = Files.lines(Paths.get("test.txt")) // String
.map(line -> line.split(" ")) // String[]
.map(data -> new Konto(data[1], new Date(data[2])) // Konto
.collect(Collectors.toList());
关于java - 在程序开始时从 .txt 文件将文件读入 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47494958/