Мне предоставлен файл CSV, который содержит 3 столбца (Id,Имя, адрес) Каждое значение столбца заключено в двойные кавычки, поскольку данные содержат специальные символы, такие как запятая, которая также является разделителем полей (,) Поскольку данные заключены в двойные кавычки, все это рассматривается как строка.
Мое требование - я должен прочитать предоставленный Source файл CSV и создать новый файл CSV, в котором будет несколько пользовательских столбцов без значения, и что наиболее важно значения столбцов не должны быть заключены в двойные кавычки, а значения, содержащиеЗапятая не должна быть перенесена на следующий столбец.
До сих пор я пробовал код ниже.Добавлен новый пользовательский столбец, но двойные кавычки и разделитель не обрабатываются.Любая помощь о том, как это можно сделать.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo2 {
public static void main(String[] args) throws IOException {
File sourceCsvFile = null;
File finalCsvFile = null;
sourceCsvFile = new File("C:\\MyData\\Input.csv");
finalCsvFile = new File("C:\\MyData\\Output.csv");
String line = "";
String cvsSplitBy = ",";
BufferedWriter writer = new BufferedWriter(new FileWriter(finalCsvFile));
try (BufferedReader br = new BufferedReader(new FileReader(sourceCsvFile))) // read the actual Source downloaded csv file which contains double quotes
{
line = br.readLine(); // read only first line
String newFileLine = "\"UniqueID\"" + cvsSplitBy + line + cvsSplitBy + "\"IsDelete\"" + cvsSplitBy + "\"Rootpid\"";
writer.write(newFileLine); // will be written as first line in new csv
writer.newLine(); // go to next line for writing next lines
while ((line = br.readLine()) != null) // this loop to write data for all lines except headers
{
newFileLine = "\"\"" + cvsSplitBy + line + cvsSplitBy + "\"\"" + cvsSplitBy + "\"\"";
//[enter image description here][1] newFileLine = newFileLine.replace("\"", ""); // when replace is used double quotes is gone, but then comma(,) within data is considered as new column and so data shifts to next column
writer.write(newFileLine);
writer.newLine();
}
}
writer.close();
}
}