ZZz*_*Zzz 6 java file-io amazon-s3 amazon-web-services
我有一个文件Amazon S3桶ABCD.我有3个对象("folderA/folderB/folderC/abcd.csv")是文件夹,在最后的文件夹中我有一个.csv文件(abcd.csv).我已经使用逻辑将其转换为并将其JSON加载回另一个文件,该.txt文件是同一文件夹中的文件("folderA/folderB/folderC/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);
Run Code Online (Sandbox Code Playgroud)
首先,您应该让对象InputStream满足您的需求.
S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, key));
InputStream objectData = object.getObjectContent();
Run Code Online (Sandbox Code Playgroud)
传递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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
下载对象后,读取文件并将其JSON写入.txt文件,之后您可以将txt文件上传到所需的存储桶中S3
| 归档时间: |
|
| 查看次数: |
21350 次 |
| 最近记录: |