总会有奇奇怪怪的需求,这不就来了一个,本来是内部的访问,非得给一个HTTP方式返回一个zip流来,只能去解析一下了,直接用java读取流里面的CSV文件就好了,对这块不太熟,网上找了点代码,看了大致了解了一下写了个demo出来,记录一下,免得以后再遇到不好找。
//从HTTP返回conn中直接获取zip文件里的具体CSV数据
private static List<String> getListFromZipStream(HttpURLConnection conn) throws IOException {
BufferedInputStream bis = null;
ZipInputStream zin = null;
try {
//获取网络输入流
bis = new BufferedInputStream(conn.getInputStream());
zin = new ZipInputStream(bis);
List<String> list = new ArrayList<>();
//这块是设置文件读取位置
while ((zin.getNextEntry()) != null) {
CsvReader csvReader = new CsvReader(zin, Charset.forName("gbk"));
csvReader.readHeaders();
while (csvReader.readRecord()) {
//第一个单号
String outerOrderIdStr = csvReader.get(0);
list.add(with