在格式化 CSV 的开头添加空行
Adding blank line to beginning of formatted CSV
我试图在使用 SP(和 FMT 文件)批量插入之前从 csv 中删除引号。问题是我们的 FMT 文件依靠 headers 之前的空行来处理它,所以如果没有起始空行,SP 就会失败。我想以某种方式在 headers 之前添加一个空行。
这是我的代码
public Path truncateQuoteMarks(Path path) throws Exception {
String pipeDelimitedFilename = path.toAbsolutePath().toString();
Path convertedFilename = Paths.get(pipeDelimitedFilename.substring(0, pipeDelimitedFilename.lastIndexOf(".csv")) + "_no_quotes.csv");
CSVReader reader = new CSVReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(path.toAbsolutePath().toString()))), '|', CSVParser.DEFAULT_QUOTE_CHARACTER);
//skips headers
reader.skip(1);
CSVWriter writer = new CSVWriter(new FileWriter(convertedFilename.toAbsolutePath().toString()), '|', CSVWriter.NO_QUOTE_CHARACTER);
String[] currentLine;
while((currentLine = reader.readNext()) != null) {
writer.writeNext(currentLine);
}
writer.close();
return convertedFilename;
}
我尝试使用 writer.writeNext(new String[]{});
,但仍然失败。我在这里做错了什么?
您需要直接写入FileWriter:
FileWriter fw = new FileWriter(convertedFilename.toAbsolutePath().toString());
fw.write(System.lineSeparator());
CSVWriter writer = new CSVWriter(fw, '|', CSVWriter.NO_QUOTE_CHARACTER);
然后像以前一样继续。
我试图在使用 SP(和 FMT 文件)批量插入之前从 csv 中删除引号。问题是我们的 FMT 文件依靠 headers 之前的空行来处理它,所以如果没有起始空行,SP 就会失败。我想以某种方式在 headers 之前添加一个空行。
这是我的代码
public Path truncateQuoteMarks(Path path) throws Exception {
String pipeDelimitedFilename = path.toAbsolutePath().toString();
Path convertedFilename = Paths.get(pipeDelimitedFilename.substring(0, pipeDelimitedFilename.lastIndexOf(".csv")) + "_no_quotes.csv");
CSVReader reader = new CSVReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(path.toAbsolutePath().toString()))), '|', CSVParser.DEFAULT_QUOTE_CHARACTER);
//skips headers
reader.skip(1);
CSVWriter writer = new CSVWriter(new FileWriter(convertedFilename.toAbsolutePath().toString()), '|', CSVWriter.NO_QUOTE_CHARACTER);
String[] currentLine;
while((currentLine = reader.readNext()) != null) {
writer.writeNext(currentLine);
}
writer.close();
return convertedFilename;
}
我尝试使用 writer.writeNext(new String[]{});
,但仍然失败。我在这里做错了什么?
您需要直接写入FileWriter:
FileWriter fw = new FileWriter(convertedFilename.toAbsolutePath().toString());
fw.write(System.lineSeparator());
CSVWriter writer = new CSVWriter(fw, '|', CSVWriter.NO_QUOTE_CHARACTER);
然后像以前一样继续。