如何从s3 [Java]下载部分文件

时间:2015-02-18 19:24:03

标签: java amazon-s3

我经常遇到使用gzip格式的s3存储桶中的大文件。这些基本上是gzip格式的文本文件,所以我想下载一个部分文件(让我们说几百行)。

我在 s3cmd 中找不到任何选项,这样我就可以下载部分文件,即使它是一个没有任何压缩的纯文本文件。

以下是我现在所拥有的java代码,它再次下载完整的文件,我还应该在这里下载一个gzip格式的部分文件。

    String outPutFile = 'mylocalfile.txt';
    File file = new File(outPutFile);
    S3Object s3object = s3Client.getObject(new GetObjectRequest(bucketName, key));
    InputStream reader = new BufferedInputStream(s3object.getObjectContent());
    OutputStream writer = new BufferedOutputStream(new FileOutputStream(file));
    int read = -1;

    while ((read = reader.read()) != -1) {
        writer.write(read);
    }

1 个答案:

答案 0 :(得分:0)

GZIPInputStream reading line by line帮助我解决了我的问题。所以最后这就是我所拥有的。

int numOfLinesRead = 0;
String outPutFile = 'mylocalfile.txt';
FileWriter writer = new FileWriter(outPutFile);

S3Object s3object = s3Client.getObject(new GetObjectRequest(bucketName, key));
InputStream fileStream = new BufferedInputStream(s3object.getObjectContent());
gzipStream = new GZIPInputStream(fileStream);
decoder = new InputStreamReader(gzipStream, "UTF-8");
BufferedReader buffered = new BufferedReader(decoder);

while ((thisLine = buffered.readLine()) != null && numOfLinesRead < numOfLinesToRead) {
    writer.write(thisLine+'\n');
    numOfLinesRead++;
}