Java OpenCSV可以';t读取Jersey 2创建的输入流

Java OpenCSV可以';t读取Jersey 2创建的输入流,java,jersey,jersey-2.0,opencsv,Java,Jersey,Jersey 2.0,Opencsv,我有以下代码: @POST @Path("/csv") @Consumes(MediaType.MULTIPART_FORM_DATA) public String populateCSV(@FormDataParam("data") InputStream fileInputStream) throws JsonParseException, JsonMappingException, IOException { ObjectMapper m

我有以下代码:

    @POST
    @Path("/csv")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public String populateCSV(@FormDataParam("data") InputStream fileInputStream) throws   JsonParseException, JsonMappingException, IOException {
        ObjectMapper mapper = new ObjectMapper();
        File initialFile = new File("/Users/me/Downloads/file.csv");
        InputStream targetStream = FileUtils.openInputStream(initialFile);
        CSVReader reader = new CSVReader(new InputStreamReader(targetStream), ',', '"', 0);
        CSVReader jerseyReader = new CSVReader(new InputStreamReader(fileInputStream), ',', '"', 0);
        List<String[]> fileAllRows = reader.readAll();
        List<String[]> jerseyAllRows = jerseyReader.readAll();
        return null;
}
我确实有台词。但这是对内存的浪费:(有什么想法吗?

首先,您应该尝试CSV解析器,因为它的速度是CSV解析器的两倍,并且有许多附加功能

其次,您应该提供输入的编码

第三,您可能还需要明确指定行分隔符

示例使用:

File initialFile=新文件(“/Users/me/Downloads/File.csv”);
InputStream targetStream=FileUtils.openInputStream(初始文件);
CsvParserSettings=新CsvParserSettings();
settings.getFormat().setLineSeparator(“\n”);
CsvParser parser=新的CsvParser(设置);
List allRows=parser.parseAll(新的InputStreamReader(targetStream,“UTF-8”);

披露:我是这个库的作者。它是开源和免费的(Apache V2.0许可证).

您有任何错误吗?没有。我没有收到任何错误。很好。这成功了!我可以用这个解析器编写吗?我想添加到我正在阅读的现有文件中的另一个列是的,您可以!只需使用类。检查感谢。输出写入是什么?我试图发送一个ByteArrayOutputStream,但它没有接受。只需提供一个Writer:ByteArrayOutputSStream csvResult=新建ByteArrayOutputStream();Writer Writer=新建输出Streamwriter(csvResult,“UTF-8”);CsvWriter CsvWriter=新建CsvWriter(Writer,设置);
InputStream is = new ByteArrayInputStream(IOUtils.toString(inputStream).getBytes());
reader = new CSVReader(new InputStreamReader(is), ',', '"', 0);
File initialFile = new File("/Users/me/Downloads/file.csv");
InputStream targetStream = FileUtils.openInputStream(initialFile);

CsvParserSettings settings = new CsvParserSettings();
settings.getFormat().setLineSeparator("\n");

CsvParser parser = new CsvParser(settings);
List<String[]> allRows = parser.parseAll(new InputStreamReader(targetStream, "UTF-8"));