/
Letta21
/
HWAbstrInheritance
Обзор
Документация
Войти
/
Letta21
/
HWAbstrInheritance
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
CSVwork
219 строк
9 KB
Letta21
create CSVwork
09 янв 2026, 18:53
09 янв 2026, 18:53
1416f0b
Код
Авторство
О чём код?
import com.opencsv.*; import com.opencsv.bean.*; import com.opencsv.exceptions.CsvDataTypeMismatchException; import com.opencsv.exceptions.CsvRequiredFieldEmptyException; import com.opencsv.exceptions.CsvValidationException; import java.io.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) throws FileNotFoundException { String fileName = "staff.csv"; // --- ШАГ 1: Создаем файл и пишем первую строку --- String[] employee1 = "1,David,Miller,Australia,30".split(","); // Используем try-with-resources, чтобы writer закрылся сам try (CSVWriter writer = new CSVWriter(new FileWriter(fileName))) { writer.writeNext(employee1); } catch (IOException e) { e.printStackTrace(); } // --- ШАГ 2: Дописываем вторую строку (Append mode) --- String[] employee2 = "2,David,Feezor,USA,40".split(","); // Важно: FileWriter(fileName, true) — true означает режим дозаписи // Также используем try-with-resources, чтобы данные точно записались на диск try (CSVWriter writer = new CSVWriter(new FileWriter(fileName, true))) { writer.writeNext(employee2); } catch (IOException e) { e.printStackTrace(); } // --- ШАГ 3: Читаем файл и выводим в консоль --- try (CSVReader reader = new CSVReader(new FileReader(fileName))) { String[] nextLine; // Читаем CSV построчно while ((nextLine = reader.readNext()) != null) { System.out.println(Arrays.toString(nextLine)); } } catch (IOException | CsvValidationException e) { e.printStackTrace(); } // Создадим пользовательский парсер CSVParser parser = new CSVParserBuilder() .withSeparator('|') .build(); // Создадим считыватель через билдер /*CSVReader reader = new CSVReaderBuilder(new FileReader("staff.csv")) .withCSVParser(parser) .build(); *//* ColumnPositionMappingStrategy определяет класс, к которому будут привязывать данные из CSV документа, а также порядок расположения полей в этом документе: Чтение Java класса из CSV*//* ColumnPositionMappingStrategy<Employee> strategy = new ColumnPositionMappingStrategy<>(); strategy.setType(Employee.class); strategy.setColumnMapping("id", "firstName", "lastName", "country", "age"); *//* CsvToBean создает инструмент для взаимодействия CSV документа и выбранной ранее стратегии:*//* CSVReader csvReader = null; CsvToBean<Employee> csv = new CsvToBeanBuilder<Employee>(csvReader) .withMappingStrategy(strategy) .build(); List<Employee> list = csv.parse(); list.forEach(System.out::println); *//*CsvToBean позволяет распарсить CSV файл в список объектов, который далее можно использовать в своих целях*/ try (CSVReader csvReader = new CSVReader(new FileReader("staff.csv"))) { ColumnPositionMappingStrategy<Employee> strategy = new ColumnPositionMappingStrategy<>(); strategy.setType(Employee.class); strategy.setColumnMapping("id", "firstName", "lastName", "country", "age"); CsvToBean<Employee> csv = new CsvToBeanBuilder<Employee>(csvReader) .withMappingStrategy(strategy) .build(); List<Employee> staff = csv.parse(); staff.forEach(System.out::println); } catch (IOException e) { e.printStackTrace(); } /* List<Employee> staff = new ArrayList<>(); staff.add(new Employee("1","Nikita", "Shumskii", "Russia", "25")); staff.add(new Employee("2","Pavel", "Shramko", "Russia", "23")); try(Writer writer = new FileWriter("staff.csv")) { StatefulBeanToCsv<Employee> sbc = new StatefulBeanToCsvBuilder<Employee>(writer).build(); sbc.write(staff); } catch (IOException e) { e.printStackTrace(); } catch (CsvRequiredFieldEmptyException | CsvDataTypeMismatchException e) { e.printStackTrace(); }*/ List<Employee> staff = new ArrayList<>(); staff.add(new Employee("1","Nikita", "Shumskii", "Russia", "25")); staff.add(new Employee("2","Pavel", "Shramko", "Russia", "23")); ColumnPositionMappingStrategy<Employee> strategy = new ColumnPositionMappingStrategy<>(); strategy.setType(Employee.class); strategy.setColumnMapping("id", "firstName", "lastName", "country", "age"); // Обратите внимание на true в FileWriter - это режим добавления (append) try(Writer writer = new FileWriter("staff.csv", true)) { StatefulBeanToCsv<Employee> sbc = new StatefulBeanToCsvBuilder<Employee>(writer) .withMappingStrategy(strategy) .build(); sbc.write(staff); } catch (IOException | CsvRequiredFieldEmptyException | CsvDataTypeMismatchException e) { e.printStackTrace(); } }} /* public class Main { public static void main(String[] args) { // Создаем запись String[] employee = "1,David,Miller,Australia,30".split(","); // Создаем экземпляр CSVWriter try ( CSVWriter writer = new CSVWriter(new FileWriter("staff.csv"))) { // Записываем запись в файл writer.writeNext(employee); } catch (IOException e) { e.printStackTrace(); } // Создаем экземпляр CSVWriter // Разделитель по умолчанию - запятая // Символ выражения по умолчанию - двойные кавычки // Читаем все строки за один раз */ /* List<String[]> allRows = reader.readAll(); // Пройдемся по массиву строк for (String[] row : allRows) { // Выполним операцию над записью System.out.println(Arrays.toString(row)); }*//* CSVWriter writer = null; try { writer = new CSVWriter(new FileWriter("staff.csv", true)); } catch (IOException e) { throw new RuntimeException(e); } employee = "2,David,Feezor,USA,40".split(","); writer.writeNext(employee); try (CSVReader reader = new CSVReader(new FileReader("staff.csv"))) { // Массив считанных строк String[] nextLine; // Читаем CSV построчно while ((nextLine = reader.readNext()) != null) { // Работаем с прочитанными данными. System.out.println(Arrays.toString(nextLine)); } } catch (IOException | CsvValidationException e) { e.printStackTrace(); } } } */ public class Employee { private String id; private String firstName; private String lastName; private String country; private String age; public Employee(String id, String firstName, String lastName, String country, String age) { this.id = id; this.firstName = firstName; this.lastName = lastName; this.country = country; this.age = age; } public Employee() { // Пустой конструктор нужен для OpenCSV } // Геттеры и сеттеры (обязательно нужны, если поля private) public String getId() { return id; } public void setId(String id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "Employee{" + "id='" + id + '\'' + ", firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + ", country='" + country + '\'' + ", age='" + age + '\'' + '}'; } }