我的班级中有一个多部分文件作为ByteStream,我希望对此文件中的记录数进行计数。
上传的文件可以是文本/ CSV格式,其记录如下:
number1,note1
number1,note2
number3,note3
...
我的主要要求是,我不能将此文件存储在任何地方。
所以我不能使用FileReader
或BufferedReader
。
有没有一种方法可以直接计算此ByteStream的行?
答案 0 :(得分:1)
以下经过测试并且可以正常运行:
@PostMapping(consumes=MediaType.MULTIPART_FORM_DATA_VALUE)
public void fileUpload (@RequestParam MultipartFile file){
ByteArrayInputStream bis=new ByteArrayInputStream(file.getBytes());
try(BufferedReader br=new BufferedReader(new InputStreamReader(bis))){
long count = br.lines().count();
System.out.println(">>> total lines : "+count);
}
}
答案 1 :(得分:0)
由于,您无法读取行数,它不是您获取的字节流文件。如果必须读取行数,则创建临时文件,使用Bufferreader读取该文件,然后仅通过代码删除该文件。