gpt4 book ai didi

java - 如何从 JTable txt 文件创建字符串?

转载 作者:行者123 更新时间:2023-12-01 17:30:53 28 4
gpt4 key购买 nike

我需要读取 txt 文件并对不同数组或字符串中的所有内容进行排序,从而允许我为 JLabels 设置文本。用于 ID、商品名称、价格和库存的一个数组/字符串。

enter image description here

这是我的 txt 文件的预览:

enter image description here

这是我读取 txt 文件并将其导入到我的 JTable 的代码:

String filePath = "C:\\Users\\zagad\\IdeaProjects\\DATABYTES\\stock\\consoles\\consoles.txt";
File file = new File(filePath);
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String firstLine = br.readLine().trim();
String[] columnsName = firstLine.split(", ");

DefaultTableModel model3 = (DefaultTableModel) productTable.getModel();
model3.setColumnIdentifiers(columnsName);

Object[] tableLines = br.lines().toArray();

for (int i = 0; i < tableLines.length; i++) {
String line = tableLines[i].toString().trim();
String[] dataRow = line.split("/");

model3.addRow(dataRow);
}
} catch (IOException ex) {
ex.printStackTrace();
}

如何将它们分开?任何帮助将不胜感激。

TXT 文件:

ID      , Item Name              ,Price     , Stock
00016 / Apple Airpods / 8999 / 20
00017 / Samsung Galaxy Buds / 6999 / 13
00018 / Apple Airpods Pro / 14999 / 5
00019 / Beats Powerbeats Pro / 13490 / 8
00020 / Sony WF-1000XM3 / 10799 / 10

最佳答案

该格式似乎用 \ 分隔每一列,因此您可以按此拆分字符串。我们可以做的是从给定的 Path 对象读取所有行,该对象是文件的路径。然后我们可以跳过我们知道是表列名称的第一行。然后,我们可以通过使用replaceAll引用删除所有空白,将这些单独的String对象的每一行映射到String数组,然后使用String#split方法通过\分割该行,这将给我们每行的每一列。然后我们可以使用 Stream#collect 方法将所有这些字符串数组收集到一个列表中。

         List<String> lines = Files.readAllLines(Paths.get("first.txt"));

String[] columnNames = lines.stream().findFirst().orElseThrow(IOException::new).split(",");

List<MyRow> rows = lines
.stream()
.skip(1)
.map(line -> line.replaceAll(" ", "").split("/"))
.map(MyRow::valueOf)
.collect(Collectors.toList());

DefaultTableModel model3 = new DefaultTableModel();

model3.setColumnIdentifiers(columnNames);

rows.forEach(row -> model3.addRow(new Object[] { row.getId(), row.getItemName(), row.getPrice(), row.getStock() }));

List<Integer> ids = rows.stream().map(MyRow::getId).collect(Collectors.toList());

输出:

[00016, AppleAirpods, 8999, 20]
[00017, SamsungGalaxyBuds, 6999, 13]
[00018, AppleAirpodsPro, 14999, 5]
[00019, BeatsPowerbeatsPro, 13490, 8]
[00020, SonyWF-1000XM3, 10799, 10]

关于java - 如何从 JTable txt 文件创建字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61123021/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com