자바 http 에서 되 돌려 달라 고 요청 한 zip 흐름 의 파일 및 기타 읽 기 동작 을 직접 읽 습 니 다.
// HTTP conn zip CSV
private static List getListFromZipStream(HttpURLConnection conn) throws IOException {
BufferedInputStream bis = null;
ZipInputStream zin = null;
try {
//
bis = new BufferedInputStream(conn.getInputStream());
zin = new ZipInputStream(bis);
List 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(withdrawRecord);
}
}
return list;
} catch (Exception e) {
LogTypeEnum.EXCEPTION.error(e, " ");
} finally {
if (bis != null) {
bis.close();
}
if (zin != null) {
zin.close();
}
}
return null;
}
안에 일부 코드 는 제 가 수 동 으로 고 쳤 습 니 다. 이상 한 문제 가 발생 하면 스스로 처리 하면 됩 니 다. 이것 은 데 이 터 를 직접 읽 는 것 입 니 다. 물론 CSV 파일 을 직접 출력 하 는 것 도 간단 합 니 다. outputstream 출력 을 정의 하면 됩 니 다. 코드 는 다음 과 같 습 니 다.
/**
http zip csv
* @param conn
* @throws IOException
*/
private static void downloadFileFromZipStream(HttpURLConnection conn) throws IOException {
BufferedInputStream bis = null;
ZipInputStream zin = null;
int len;
byte[] buf = new byte[1024];
// , ,
FileOutputStream fos = new FileOutputStream("D:\\zipTest\\folder\\ .csv");
try {
//
bis = new BufferedInputStream(conn.getInputStream());
zin = new ZipInputStream(bis);
while ((zin.getNextEntry()) != null) {
while ((len = zin.read(buf)) != -1) {
fos.write(buf, 0, len);
}
}
// ,
return ;
} catch (Exception e) {
} finally {
if (bis != null) {
bis.close();
}
if (zin != null) {
zin.close();
}
fos.close();
}
return ;
}
zip 파일 을 읽 고 출력 할 로 컬 demo 를 첨부 합 니 다.
public static void main(String[] args) {
try {
// zip
String zipFilePath = "D:\\zip\\11.zip";
//
String destDirPath = "D:\\ \\test";
ZipFile zipFile = new ZipFile(new File(zipFilePath));
// zip
Enumeration entries = zipFile.entries();
InputStream is;
while (entries.hasMoreElements()) {
ZipEntry entry = (ZipEntry) entries.nextElement();
// , , io copy
File targetFile = new File(destDirPath + "/" + entry.getName());
//
if (!targetFile.getParentFile().exists()) {
targetFile.getParentFile().mkdirs();
}
is = zipFile.getInputStream(entry);
FileOutputStream fos = new FileOutputStream(targetFile);
int len;
byte[] buf = new byte[1024];
while ((len = is.read(buf)) != -1) {
fos.write(buf, 0, len);
}
// ,
fos.close();
is.close();
}
//
} catch (IOException e) {
} finally {
}
}
다음 에 어 리 석 지 않 게 코드 가 통 하지 않도록 기억 하 세 요. 어떤 작은 문 제 는 제 가 notepad 탈 민 으로 복사 한 가능성 입 니 다.
몇 편의 문장 을 참고 했다.
https://blog.csdn.net/qq_34474324/article/details/97369763
http://blog.sina.com.cn/s/blog_b31d573d0101htil.html
https://www.jianshu.com/p/f891b135da88
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
(´-`). oO (표준 출력의 「Hello」를 간편하게 찾고 싶다.Ruby 초보자입니다. 오늘은 ``Hello World''를 출력하는 rake 작업을 만들었습니다. 결과에 「Hello」가 포함되어 있는 것을 확인하는 테스트를 쓰고 있어, 간결하게 캐릭터 라인 지정으로 찾을 수 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.