Привет! Я хочу рассказать тебе о своем опыте работы с сохранением и загрузкой данных в csv файлы в Java. Это очень полезная функциональность при работе с табличными данными. Я использовал для этого класс AppData, который имеет заголовок и данные.В первую очередь, я создал класс AppData с приватными полями header (массив строк) и data (массив целых чисел). Эти поля определяют структуру данных, которую мы хотим сохранять и загружать.Для реализации сохранения данных в csv файл я создал метод save, который принимает экземпляр класса AppData как параметр. Внутри метода я открываю файл для записи, используя класс FileWriter. Затем я записываю заголовок в файл, объединяя его с помощью метода join с разделителем ″;″ и добавляя символ новой строки. После этого я прохожу по массиву данных и записываю каждую строку в файл, также объединяя ее с помощью метода join и добавляя символ новой строки. Наконец, я закрываю файл.
java
import java.io.FileWriter;
import java.io.IOException;
public class AppData {
private String[] header;
private int[][] data;
public void save(AppData data) {
try (FileWriter writer new FileWriter(″data.csv″)) {
writer.write(String.join(″;″, data.getHeader) ″\n″);
for (int[] row ⁚ data.getData) {
writer.write(String.join(″;″, Arrays.stream(row)
.mapToObj(String⁚⁚valueOf)
.toArray(String[]⁚⁚new)) ″\n″);
}
} catch (IOException e) {
e.printStackTrace;
}
}
}
Затем я реализовал метод загрузки данных из csv файла. Метод load читает данные из файла и возвращает экземпляр класса AppData. Внутри метода я открываю файл для чтения с помощью класса BufferedReader. Затем я считываю первую строку (заголовок) и разбиваю ее на отдельные значения с помощью метода split, используя разделитель ″;″. Затем я создаю массив строк заголовка и заполняю его полученными значениями.
После этого я создаю список строк для хранения данных. Затем я начинаю считывать строки из файла, разбивать их на значения и преобразовывать их в целые числа. Затем я добавляю полученный массив в список строк.В конце я преобразую список строк данных в двумерный массив и возвращаю экземпляр класса AppData с заголовком и данными.java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class AppData {
private String[] header;
private int[][] data;
public AppData load {
List
try (BufferedReader reader new BufferedReader(new FileReader(″data.csv″))) {
String line;
while ((line reader.readLine) ! null) {
lines.add(line);
}
} catch (IOException e) {
e.printStackTrace;
}
String[] header lines.get(0).split(″;″);
int[][] data new int[lines.size ⎼ 1][header.length];
for (int i 1; i < lines.size; i ) {
String[] row lines.get(i).split(″;″);
for (int j 0; j < header.length; j ) {
data[i, 1][j] Integer.parseInt(row[j]);
}
}
return new AppData(header, data);
}
}
Теперь, когда методы сохранения и загрузки данных реализованы, я могу использовать их в своей программе. Я создаю экземпляр класса AppData, заполняю его данными и вызываю метод save для сохранения данных в csv файл. Затем я вызываю метод load для загрузки данных из файла.java
public class Main {
public static void main(String[] args) {
AppData data new AppData;
data.setHeader(new String[]{″Value 1″, ″Value 2″, ″Value 3″});
data.setData(new int[][]{{100, 200, 123}, {300, 400, 500}});
data.save(data);
AppData loadedData data.load;
System.out.println(Arrays.toString(loadedData.getHeader));
System.out.println(Arrays.deepToString(loadedData.getData));
}
}
Таким образом, я успешно реализовал сохранение и загрузку данных в csv файлы в Java с помощью класса AppData. Этот подход позволяет легко работать с табличными данными и сохранять результаты в удобочитаемом формате.