在别人博客上看到要去改什么JDK的类或者换什么ant的jar包,其实是错的,在创建zip输入流的时候,给个字符集的参数
public static void main(String[] args) throws Exception {
CheckTheBill checkTheBill=new CheckTheBill();
File file = new File("E:\\workspace\\zh-oreo\\oreo-traffic\\downloads\\2018-08-10.zip");
checkTheBill.readZipCvsFile(file);
try {
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 读取zip文件,不解压缩直接解析,支持文件名中文,解决内容乱码
* @param file
* @throws Exception
*/
@SuppressWarnings("unchecked")
public void readZipCvsFile(File file) throws Exception {
//获得输入流,文件为zip格式,
//支付宝提供
//2018-08-10.zip内包含
//20881021722523470156_20180810_业务明细.csv
//20881021722523470156_20180810_业务明细(汇总).csv
ZipInputStream in = new ZipInputStream(new FileInputStream(file), Charset.forName("gbk"));//charset
//不解压直接读取,加上gbk解决乱码问题
BufferedReader br = new BufferedReader(new InputStreamReader(in,"gbk"));//gbk
ZipEntry zipFile;
//循环读取zip中的cvs文件,使用jdk自带就可以,编码格式gbk,
while ((zipFile=in.getNextEntry())!=null) {
if (zipFile.isDirectory()){
//如果是目录,不处理
}
//获得cvs名字
String fileName = zipFile.getName();
System.out.println("-----"+fileName);
//检测文件是否存在
if (fileName != null && fileName.indexOf(".") != -1) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
//File[] fs = new File("E:\\workspace\\zh-oreo\\oreo-traffic\\downloads\\2018-08-09-BusinessSummaryList").listFiles();
// for (File files : fs) {
// checkTheBill.readZipCvsFile(file);
// if (files.getAbsolutePath().contains("汇总")) {
// //Double money = ReadCsv.getMoney("", file.getAbsolutePath());
// }
// }
// 插入成功, 删除csv 文件
// for (File files : fs) {
// files.delete();
// }
//关闭流
br.close();
in.close();
}
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.io.*;
//去把jdk里的src.zip解压了就可以了
转载至链接:https://my.oschina.net/Skynet01/blog/1926375