공개 anonymous ftp에서 파일을 읽으려고하고 있는데 문제가 있습니다. 나는 일반 텍스트가 잘 파일을 읽을 수 있지만 내가 GZIP 파일에서 읽을 때, 나는이 예외 얻을 : 나는 파일을 다운로드하고 GZIPInputStream
에 싸여 FileInputStream
를 사용하여 시도GZIP 파일을 읽을 때 GZIPInputStream이 예외를 throw합니다.
Exception in thread "main" java.util.zip.ZipException: invalid distance too far back
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164)
at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:116)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at java_io_FilterInputStream$read.call(Unknown Source)
at GenBankFilePoc.main(GenBankFilePoc.groovy:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
하고 정확한있어 같은 문제, 그래서 나는 그것이 FTP 클라이언트 (아파치)에 문제가 있다고 생각하지 않습니다.
다음은 문제를 재현하는 테스트 코드입니다.
FTPClient ftp = new FTPClient();
ftp.connect("ftp.ncbi.nih.gov");
ftp.login("anonymous", "");
InputStream is = new GZIPInputStream(ftp.retrieveFileStream("/genbank/gbbct1.seq.gz"));
try {
byte[] buffer = new byte[65536];
int noRead;
while ((noRead = is.read(buffer)) != 1) {
System.out.write(buffer, 0, noRead);
}
} finally {
is.close();
ftp.disconnect();
}
내가 이런 일을 할 이유에 어떤 문서를 찾을 수 없습니다, 어디서나 나를 점점되지 않은 디버거의 코드를 통해 다음과 같은 : 단지 표준 출력에 인쇄하려고합니다. 나는 명백한 것을 놓치고있는 것처럼 느낀다.
EDIT : 수동으로 파일을 다운로드하여 GZIPInputStream으로 읽고 제대로 인쇄 할 수있었습니다. 나는 2 개의 다른 자바 FTP 클라이언트로 이것을 시도했다
그 코드를 (파일 이름을 지정하면) 이전과 동일한 예외를 생성합니다. –