java导入百万csv_关于java导入导出CSV文件的坑

现在越来越多与数据相关的项目用到数据的批量导入导出功能,csv格式文件也是这种场景下最常用的文件格式。csv可以用excel打开,这也是他便利的一面,相比于xlsx等格式,csv格式更简单,只包含数据,不包含格式,体积更小,兼容性更好。但其中也隐藏着一些坑。

我们一般常用的编码格式是UTF-8,其实有utf-8和utf-8 bom两种格式,utf-8 bom格式是在文件开头加了0xEF, 0xBB, 0xBF三个字节。一般情况用户在使用excel填写数据后生成的csv都是utf-8 bom格式,这就造成了读取时很容易产生数据乱码的情况。

解决方法是使用apache commons io提供的BOMInputStream:

commons-io

commons-io

2.4

BufferedReader reader = null;

try {

//reader = new BufferedReader(new FileReader(file));

//使用BOMInputStream自动去除UTF-8中的BOM!!!

reader = new BufferedReader(new InputStreamReader(new BOMInputStream(new FileInputStream(file))));

String str = null;

//一次读入一行(非空),直到读入null为文件结束

while ((str = reader.readLine()) != null) {

}


版权声明:本文为weixin_35645652原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。