Привет всем! Сегодня я хочу рассказать о том, как я реализовал сохранение и загрузку данных в csv файл в своем проекте․ Эта функция оказалась очень полезной, поскольку позволила мне сохранить и восстановить данные в удобном формате․Для начала, я создал класс с именем ″AppData″, в котором определил два приватных поля⁚ ″header″ и ″data″․ ″header″ используется для хранения строки заголовка с набором столбцов, а ″data″ предназначено для хранения набора строк с целочисленными значениями․
Когда я реализовал метод ″save(AppData data)″, я использовал следующий подход⁚
1․ Открыл csv файл для записи․
2․ Записал строку заголовка в файл, разделив значения столбцов символом точка с запятой․ Чтобы сделать это, я использовал метод ″join″ из класса String, передав список значений заголовка и символ разделителя в качестве аргументов․
Пример⁚
String headerLine String;join(″;″, data․getHeader);
3․ Затем٫ я приступил к записи строк с данными в файл․ Для этого я использовал вложенные циклы٫ чтобы перебрать все строки и столбцы из двумерного массива ″data″․ Используя метод ″write″ из класса BufferedWriter٫ я записал каждое значение в файл٫ разделяя их символом точка с запятой․
Пример⁚
BufferedWriter writer new BufferedWriter(new FileWriter(″data․csv″));
for (int[] row ⁚ data․getData) {
String line String․join(″;″, Arrays․stream(row)
․mapToObj(String⁚⁚valueOf)
․collect(Collectors․toList));
writer․write(line);
writer․newLine;
}
writer․close;
Теперь, перейдем к реализации метода ″load″․ В этом методе, я считываю данные из csv файла целиком и сохраняю их в экземпляре класса ″AppData″․ Вот как я это сделал⁚
1․ Открываю csv файл для чтения․
2․ Читаю строку заголовка из файла и разделяю ее на отдельные значения, используя метод ″split″ класса String․
3․ Создаю временный список, в который буду сохранять строки с данными․
4․ Читаю каждую строку с данными из файла и разделяю ее на значения, также используя метод ″split″․
5․ Преобразую каждое значение из строки в целое число и сохраняю его во временном списке․
Пример⁚
BufferedReader reader new BufferedReader(new FileReader(″data․csv″));
String headerLine reader․readLine;
String[] header headerLine․split(″;″);
List
String line;
while ((line reader․readLine) ! null) {
String[] values line․split(″;″);
int[] row Arrays․stream(values)
․mapToInt(Integer⁚⁚parseInt)
․toArray;
dataList․add(row);
}
reader․close;
В конце, я создаю экземпляр класса ″AppData″ и передаю ему заголовок и данные, которые я только что считал и сохранил в списке․
Пример⁚
AppData appData new AppData;
appData․setHeader(header);
appData․setData(dataList․toArray(new int[0][]));
Теперь я могу легко сохранить данные в csv файл и восстановить их из него при необходимости․ Это очень удобно и экономит мне время и усилия․
Надеюсь, что мой опыт будет полезен и поможет вам реализовать сохранение и загрузку данных в csv файл в ваших проектах!