Is it possible to download S3object
in Java
directly into memory and get it removed when i'm done with the task?
S3Object fetchFile = s3. getObject(new GetObjectRequest(bucketName, fileName)); final BufferedInputStream i = new BufferedInputStream(fetchFile. getObjectContent()); InputStream objectData = fetchFile. getObjectContent(); Files.
You can download an object from an S3 bucket in any of the following ways: Select the object and choose Download or choose Download as from the Actions menu if you want to download the object to a specific folder. If you want to download a specific version of the object, select the Show versions button.
Your answer You can use cp to copy the files from an s3 bucket to your local system. Use the following command: $ aws s3 cp s3://bucket/folder/file.txt . To know more about AWS S3 and its features in detail check this out!
Use the AWS SDK for Java and Apache Commons IO as such:
//import org.apache.commons.io.IOUtils AmazonS3 s3 = new AmazonS3Client(credentials); // anonymous credentials are possible if this isn't your bucket S3Object object = s3.getObject("bucket", "key"); byte[] byteArray = IOUtils.toByteArray(object.getObjectContent());
Not sure what you mean by "get it removed", but IOUtils
will close the object's input stream when it's done converting it to a byte array. If you mean you want to delete the object from s3, that's as easy as:
s3.deleteObject("bucket", "key");
As of AWS JAVA SDK 2 you can you use ReponseTransformer
to convert the response to different types. (See javadoc).
Below is the example for getting the object as bytes
GetObjectRequest request = GetObjectRequest.builder().bucket(bucket).key(key).build() ResponseBytes<GetObjectResponse> result = bytess3Client.getObject(request, ResponseTransformer.toBytes()) // to get the bytes result.asByteArray()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With