Похоже, что формат разделяет каждый из столбцов на \
, поэтому вы можете разделить строку на это. Что мы можем сделать, это прочитать все строки из данного объекта Path, который является путем к файлу. Затем мы можем пропустить первую строку, которую мы знаем, это имена столбцов таблицы. Затем мы можем отобразить каждую из этих строк, которые являются отдельными объектами String, в массив String, удалив все пробелы с помощью ссылки replaceAll, а затем с помощью метода 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]