Как конвертировать списокна запятую без строки "" в Java - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь удалить строку кулака из файла CSV после прочтения.Код работает правильно, но он добавляет "" к моим данным, когда переписывает.например:

  • до записи в файл CSV: 100, COMRADE, CAMPBELL
  • после записи в файл CSV: "100", "COMRADE", "CAMPBELL"

    Вот код.

=============================================================================

public void deleteLineFromCsv() throws IOException {
        List<PatientsTabData> list = new ArrayList<>();
        BufferedReader reader = new BufferedReader(new FileReader(new File("src/main/resources/patients.csv")));
        String line = reader.readLine();
        while(line != null) {
            String[] split = line.split(",");
            list.add(new PatientsTabData().patientId(Integer.parseInt(split[0])).patName(split[1]).patLastName(split[2]));
            line = reader.readLine();
        }
        list.remove(0);
        CSVWriter writer = new CSVWriter(new FileWriter(new File("src/main/resources/patients.csv")));
        List<String[]> newlist = list.stream().map(item -> new String[]
                {String.valueOf(item.getPatientId()), item.getPatName(), item.getPatLastName()})
                .collect(Collectors.toList());
        writer.writeAll(newlist);
        writer.close();
    }

Библиотека:

        <dependency>
            <groupId>net.sf.opencsv</groupId>
            <artifactId>opencsv</artifactId>
            <version>2.3</version>
        </dependency>

Ответы [ 3 ]

1 голос
/ 18 марта 2019

Вы можете использовать другой конструктор при создании вашего писателя. Изменение

CSVWriter writer = new CSVWriter(new FileWriter(new File("src/main/resources/patients.csv")));

до

CSVWriter writer = new CSVWriter(new FileWriter(new File("src/main/resources/patients.csv")),',',CSVWriter.NO_QUOTE_CHARACTER);
0 голосов
/ 18 марта 2019

Ваш CSV-писатель записывает каждый элемент в виде строки в CSV-файл. Это может быть сделано в библиотеке, так как в строке будут храниться любые запятые в ваших данных, и позже они не добавят дополнительный столбец, если ваши данные также содержат запятую.

"name","class","house, street, city","value"

См. Документацию вашей библиотеки и проверьте, предоставляет ли она возможность не обрабатывать каждый элемент как строку.

Но мое мнение состоит в том, чтобы хранить строки в кавычках, чтобы избежать описания данных во время чтения.

0 голосов
/ 18 марта 2019

это способ преобразования списка в запятую.

List<String[]> oldList= . . . ;
String requiredString = oldList
.stream()
    .map(Arrays::asList)
    .flatMap(Collection::stream)
    .collect(Collectors.joining(","));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...