我在 Amazon S3
存储桶 ABCD
中有一个文件。我有 3 个对象 ("folderA/folderB/folderC/abcd.csv")
是文件夹,在最后一个文件夹中我有一个 .csv
文件 (abcd .csv)
。我使用逻辑将其转换为 JSON
并将其加载回另一个文件,该文件是同一文件夹 ("folderA/folderB/文件夹C/abcd.txt")
。为此,我必须在本地下载文件。我将如何直接读取文件并将其写回文本文件。下面是我用来写入 S3 文件的代码,我需要从 S3 读取文件。
InputStream inputStream = new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_16));
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(json.length());
PutObjectRequest request = new PutObjectRequest(bucketPut, filePut, inputStream, metadata);
s3.putObject(request);
最佳答案
首先,您应该获取对象 InputStream
来满足您的需要。
S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, key));
InputStream objectData = object.getObjectContent();
将 InputStream
、File Name
和 path
传递给以下方法以下载您的流。
public void saveFile(String fileName, String path, InputStream objectData) throws Exception {
DataOutputStream dos = null;
OutputStream out = null;
try {
File newDirectory = new File(path);
if (!newDirectory.exists()) {
newDirectory.mkdirs();
}
File uploadedFile = new File(path, uploadFileName);
out = new FileOutputStream(uploadedFile);
byte[] fileAsBytes = new byte[inputStream.available()];
inputStream.read(fileAsBytes);
dos = new DataOutputStream(out);
dos.write(fileAsBytes);
} catch (IOException io) {
io.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (dos != null) {
dos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
下载对象后,读取文件并将其转换为 JSON
并将其写入 .txt
文件,之后您可以上传 txt
文件到 S3
关于java - 如何读取 Amazon S3 中的文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27318587/