Как создать несколько файлов .csv из нескольких hashMap в Java? - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь создать (записать с данными) несколько файлов из нескольких hashMap.

    Map<String, List<CSVRecord>> map = new HashMap<>();

        List<CsvStructureEntity> listWithData = new ArrayList<>();

        try {
            Reader reader = new BufferedReader(new FileReader(file));
            CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT
                    .withFirstRecordAsHeader()
                    .withIgnoreHeaderCase()
                    .withTrim());

            for (CSVRecord csvRecord : csvParser) {

                LOGGER.info("The parser read line ...");
                // Accessing values by Header names

                String line1 = csvRecord.get("line1");

                String line2 = csvRecord.get("line2");

                String lineId = csvRecord.get("lineId");

                List<CSVRecord> list = map.getOrDefault(lineId, new LinkedList<CSVRecord>());
                list.add(csvRecord);
                map.put(lineId, list);


            // Write map to new .csv files
            String lineSeparator = System.getProperty("line.separator");

            try (Writer writer = new FileWriter("/home/tmp/new_csv_file.csv")) {
                for (Map.Entry<String, List<CSVRecord>> entry : map.entrySet()) {
                    writer.append(entry.getKey())
                            .append(',')
                            .append(entry.getValue())
                            .append(lineSeparator);
                }
            } catch (IOException ex) {
                ex.printStackTrace(System.err);
            }



                String line3 = csvRecord.get("line3");

                String line4 = csvRecord.get("line4");

                String line5 = csvRecord.get("line5");
... (and so on until the 43rd line)

Мой исходный файл содержит 4 разных "lineId" (1,2,3,4). На основании того, что я написал, все записывается в один файл.Мне нужно записать все это в разные файлы (в разных 4 файлах), т.е. первый файл будет записан lineId = 1 и все строки для этого lineId, второй файл будет сопровождаться lineId = 2 и все строки для этогоlineId и т. д.

Может кто-нибудь сказать, что не так?Спасибо

1 Ответ

0 голосов
/ 01 октября 2018

Создайте новый FileWriter для каждого файла, в который вы хотите записать.Потому что в настоящее время вы создаете только 1 файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...