我使用以下代码从管道分隔的 CSV 中删除引号:
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);
reader.skip(1);
FileWriter fw = new FileWriter(convertedFilename.toAbsolutePath().toString());
fw.write(System.lineSeparator());
CSVWriter writer = new CSVWriter(fw, '|', CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.RFC4180_LINE_END);
String[] currentLine;
while((currentLine = reader.readNext()) != null) {
writer.writeNext(currentLine);
}
writer.flush();
writer.close();
reader.close();
return convertedFilename;
}
通过谷歌搜索,我发现这个问题至少被问过一次 here以及在另一个网站上。另一个网站声称这是 OpenCSV 的工作方式并建议编辑文件大小,但必须有其他方法。
有没有办法从文件末尾删除这个空行? SQL Server BULKINSERT
根本不喜欢它。
最佳答案
根据RFC4180最后的行尾是可选的。所以作家可以写也可以不写。 openCSVWriter 无法选择创建没有行结尾的结尾。您可以扩展该类并为行结尾添加一个 setter ,并在编写最后一行之前将其设置为空或手动编写。
对于每种可能性,您应该查看 writer 的来源.
关于java - OpenCSV CSVWriter 在文件末尾添加空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53191772/