繁体   English   中英

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

[英]How to download a partial file from s3 [Java]

我经常遇到使用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);
    }

GZIPInputStream逐行阅读帮助我解决了我的问题。 所以最后这就是我所拥有的。

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++;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM