如何从S3下载GZip文件? [英] How to download GZip file from S3?
问题描述
我查看了 AWS S3 Java SDK - 下载文件帮助和使用Java中的Zip和GZip文件。
虽然它们提供了分别从S3和GZipped文件下载和处理文件的方法,但这些方法无法处理位于S3中的GZipped文件。我该怎么办?
While they provide ways to download and deal with files from S3 and GZipped files respectively, these do not help in dealing with a GZipped file located in S3. How would I do this?
目前我有:
try {
AmazonS3 s3Client = new AmazonS3Client(
new ProfileCredentialsProvider());
String URL = downloadURL.getPrimitiveJavaObject(arg0[0].get());
S3Object fileObj = s3Client.getObject(getBucket(URL), getFile(URL));
BufferedReader fileIn = new BufferedReader(new InputStreamReader(
fileObj.getObjectContent()));
String fileContent = "";
String line = fileIn.readLine();
while (line != null){
fileContent += line + "\n";
line = fileIn.readLine();
}
fileObj.close();
return fileContent;
} catch (IOException e) {
e.printStackTrace();
return "ERROR IOEXCEPTION";
}
显然,我没有处理文件的压缩性质和我的输出是:
Clearly, I am not handling the compressed nature of the file, and my output is:
����sU�3204�50�5010�20�24��L,(���O�V�M-.NLOU�R�U�����<s��<#�^�.wߐX�%w���������}C=�%�J3��.�����둚�S�ᜑ���ZQ�T�e��#sr�cdN#瘐:&�
S�BǔJ����P�<��
但是,我无法在第二个问题因为文件不在本地,需要从S3下载。
However, I cannot implement the example in the second question given above because the file is not located locally, it requires downloading from S3.
我该怎么办?
推荐答案
我使用扫描仪解决了这个问题
而不是 InputStream
。
扫描程序获取GZIPInputStream并读取解压缩的文件逐行:
The scanner takes the GZIPInputStream and reads the unzipped file line by line:
fileObj = s3Client.getObject(new GetObjectRequest(oSummary.getBucketName(), oSummary.getKey()));
fileIn = new Scanner(new GZIPInputStream(fileObj.getObjectContent()));
这篇关于如何从S3下载GZip文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!