如何从 s3 [Java] 下载部分文件
How to download a partial file from s3 [Java]
我经常在 s3 存储桶中遇到 gzip 格式的大文件。这些基本上是 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 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++;
}
我经常在 s3 存储桶中遇到 gzip 格式的大文件。这些基本上是 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 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++;
}