无法使用Java从AWS下载文件

时间:2015-12-03 13:58:20

标签: java xml amazon-web-services io

我目前正在尝试编写Java程序来下载存储在远程服务器上的gzip压缩文件。

我一直使用的代码适用于某些网址,例如:

ftp://ftp.ncbi.nih.gov/pub/geo/DATA/SOFT/by_series/GSE10/GSE10_family.soft.gz

但是在尝试访问AWS URL时会抛出IOException,例如:

https://s3.amazonaws.com/ ....(由于保密原因,我无法链接该文件,但它是一个有效的.gz文件)

问题是(我认为)工作的URL的内容类型是' octet-stream',这很好,但AWS URL是' xml'

有没有办法访问八位字节流?

以下是我使用的代码:

try{

        URL url = new URL("ftp://ftp.ncbi.nih.gov/pub/geo/DATA/SOFT/by_series/GSE10/GSE10_family.soft.gz");
        URLConnection con = url.openConnection();
        BufferedInputStream in = new BufferedInputStream(con.getInputStream());
        FileOutputStream out = new FileOutputStream("GSE10_family.soft.gz");

        int i = 0;
        byte[] bytesIn = new byte[3000000];
        while ((i = in.read(bytesIn)) >= 0) {
            out.write(bytesIn, 0, i);
        }
        out.close();
        in.close();
}
catch (MalformedURLException e){

}
catch (IOException e){

}

以下是例外:

Exception in thread "main" java.io.FileNotFoundException:       https://s3.amazonaws.com/...
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1675)
at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1673)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1671)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1244)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at DataProcessor.downloadAndUnzip(DataProcessor.java:79)
at DataProcessor.processFile(DataProcessor.java:34)
at Test.main(Test.java:25)
Caused by: java.io.FileNotFoundException: https://s3.amazonaws.com/...
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1624)
at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:2678)
at java.net.URLConnection.getContentType(URLConnection.java:522)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getContentType(HttpsURLConnectionImpl.java:406)
at DataProcessor.downloadAndUnzip(DataProcessor.java:78)

0 个答案:

没有答案