我有一个csv文件,应该使用apache poi读取它,而读取文件时,它应该遵循某种模式,例如数据不应该带有'或''或这样的新行。验证之后,我们需要将经过验证的csv插入db。我为此编写的代码如下。
@RequestMapping(value = "/insert", method = RequestMethod.POST)
public void uploadData(@RequestParam("file") final MultipartFile DataFile,
@PathVariable("DataType") final String DataType,
final Model model, final HttpServletRequest request,
final HttpServletResponse response) throws Exception {
byte[] bytes = null;
InputStream inputStream = null;
if (DataFile != null && !DataFile.isEmpty()) {
inputStream = DataFile.getInputStream();
LOGGER.info("Making Service call to save imported Enrichment details in DB ");
if (StringUtils.equalsIgnoreCase(DataType, "csvData1")) {
bytes = enrichmentDataFile.getBytes();
inputStream = new ByteArrayInputStream(Pattern.compile("(\\r\"|\\n\"|\\r\"\\n\"|\"|\')+")
.matcher(new String(bytes)).replaceAll("").getBytes(Charset.forName("UTF-8")));
DataService.insertData(inputStream,
DataFile.getOriginalFilename());//reading data using Apache POI and inserting into db
} else if (StringUtils.equalsIgnoreCase(DataType, "csvData2")) {
DataService.insertData(inputStream,
DataFile.getOriginalFilename());//reading data using Apache POI and inserting into db
}
}
}
可以将csvData2插入数据库,但是当iam尝试插入csvData1时,它正在创建一个空文件,并且该文件正在插入db。 谁能建议我如何在没有任何'或'或换行的情况下验证inputstream(scv),然后将经过验证的代码插入db
答案 0 :(得分:0)
您的InputStream变异效果很好。问题应该在DataService.insertData方法中。