역사상 가장 간단하게 Zip Output Stream 압축 파일 의 중국어 이름 난 장 판 문 제 를 해결 하 다
3089 단어 압축 하 다.ZipOutputStreamjdk 버 전질문
첫 번 째 는 JDK 소스 코드 를 바 꾸 고 Zip OutputStream 을 복사 하여 인 코딩 을 수정 하 는 것 입 니 다.
두 번 째 는 아파 치 - ant.
이 두 가지 방법 은 상세 하 게 볼 수 있다.http://blog.csdn.net/zhanghw0917/article/details/5628039
여기 서 가장 간단 한 방법 을 소개 합 니 다. 소스 코드 를 바 꾸 지 않 아 도 되 고 apache - ant 를 바 꾸 지 않 아 도 됩 니 다. 위의 두 가지 방법 으로 중국어 코드 가 어 지 러 워 지 는 문 제 는 모두 JDK 6 를 바탕 으로 하 는 것 이지 만 JDK 7 에서 이미 해결 되 었 습 니 다. JDK 버 전 을 7 로 올 리 면 됩 니 다.
두 버 전의 소스 코드 를 비교 해 보면 알 수 있다.
JDK6u 21 의 ZipOutput Stream. java 의 원본 세 션:
/**
* Creates a new ZIP output stream.
*
* @param out
* the actual output stream
*/
public ZipOutputStream(OutputStream out) {
super(out, new Deflater(Deflater.DEFAULT_COMPRESSION, true));
usesDefaultDeflater = true;
}
/**
* Sets the ZIP file comment.
*
* @param comment
* the comment string
* @exception IllegalArgumentException
* if the length of the specified ZIP file comment is greater
* than 0xFFFF bytes
*/
public void setComment(String comment) {
if (comment != null && comment.length() > 0xffff / 3
&& getUTF8Length(comment) > 0xffff) {
throw new IllegalArgumentException("ZIP file comment too long.");
}
this.comment = comment;
}
JDK7u 65 의 ZipOutput Stream. java 의 원본 세 션:
/**
* Creates a new ZIP output stream.
*
* <p>The UTF-8 {@link java.nio.charset.Charset charset} is used
* to encode the entry names and comments.
*
* @param out the actual output stream
*/
public ZipOutputStream(OutputStream out) {
this(out, StandardCharsets.UTF_8);
}
/**
* Creates a new ZIP output stream.
*
* @param out the actual output stream
*
* @param charset the {@linkplain java.nio.charset.Charset charset}
* to be used to encode the entry names and comments
*
* @since 1.7
*/
public ZipOutputStream(OutputStream out, Charset charset) {
super(out, new Deflater(Deflater.DEFAULT_COMPRESSION, true));
if (charset == null)
throw new NullPointerException("charset is null");
this.zc = ZipCoder.get(charset);
usesDefaultDeflater = true;
}
/**
* Sets the ZIP file comment.
* @param comment the comment string
* @exception IllegalArgumentException if the length of the specified
* ZIP file comment is greater than 0xFFFF bytes
*/
public void setComment(String comment) {
if (comment != null) {
this.comment = zc.getBytes(comment);
if (this.comment.length > 0xffff)
throw new IllegalArgumentException("ZIP file comment too long.");
}
}
JDK 6 버 전에 서 알 수 있 듯 이 하나의 OutputStream 매개 변 수 를 가 진 구조 방법 만 있 고 문자 집합 에 들 어 오지 않 았 다. JDK 7 버 전에 서 는 두 가지 구조 방법 이 있 는데 하 나 는 OutputStream 과 Charset 를 가 진 구조 방법 이 고 다른 하 나 는 다시 불 러 오 는 것 이 며 하나의 OutputStream 만 있 고 기본 문자 집합 은 UTF - 8 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 압축 풀기더 읽 기 최근 에 자바 로 압축 하 는 예 를 보 았 습 니 다. 스스로 정리 하고 싶 습 니 다. 이 방법 은 압축 파일 을 압축 해제 하고 파일 이름 에 test. zip 을 넣 을 수 있 습 니 다. test...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.