Здесь есть несколько вопросов. Прежде всего:
String[] splitTranzactie = lines.toArray(new String[]{});
собирается просто превратить ваш список строк в массив строк. Чтобы разбить каждую строку на составные части, вы можете использовать что-то вроде String.split (","). Это вернет массив строк. Обратите внимание, что если вы ожидаете, что какое-либо из последних значений будет пустым, т. Е. Оканчивается одной или несколькими запятыми, то возвращаемый массив будет таким же, как и последняя позиция значения, которую он найдет. то есть, если строка 1,cont,details,,
, которую вы разделите, вернет массив длины 3, а не 5. Вы должны защищаться от этого.
Чтобы преобразовать String в int или double, вы можете использовать Integer.parseInt()
и Double.parseInt()
соответственно. Опять же, вы можете подумать о защите кода, если значения могут отличаться от числовых значений, поскольку эти два метода вызовут исключение, если они не смогут проанализировать ввод.
Вы также должны поместить свои close()
методы в блок finally, чтобы гарантировать, что они вызываются, однако, поскольку они AutoCloseable
, вы можете избежать всего этого, используя синтаксис try-with-resources, который автоматически закроет читатель.
try(Reader in = new Reader()) {
}
Рабочий пример, в котором все вышеперечисленное (но без защитного кода) следует вашему примеру, может выглядеть примерно так:
List<Auto> autos = new ArrayList<>();
try (BufferedReader in = new BufferedReader(new FileReader("Test.txt"))) {
String line = null;
while((line = in.readLine()) != null) {
String[] values = line.split(",");
autos.add(new Auto(
Integer.parseInt(values[0]),
values[1],
values[2],
Double.parseDouble(values[3]),
values[4]));
}
}