Comment lire le contenu d'un fichier dans Amazon S3
J'ai un fichier dans Amazon S3
dans un seau ABCD
. J'ai 3 objets ("folderA/folderB/folderC/abcd.csv")
qui sont des dossiers et dans le dossier final j'ai un .csv
fichier (abcd.csv)
. J'ai utilisé une logique de le convertir en JSON
et la charge dans un autre fichier qui est une .txt
fichier dans le même dossier ("folderA/folderB/folderC/abcd.txt")
. J'ai dû télécharger le fichier localement, afin de le faire. Comment pourrais-je le lire directement le fichier et écrire dans le fichier texte. Le code que j'ai utilisé pour écrire dans un fichier en S3 est en dessous et j'ai besoin de lire un fichier à partir de 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);
Vous semblez un peu confus sur les objets S3: vous pouvez avoir un objet avec une clé comme
C'est un doublon de Comment faire pour écrire un S3 objet dans un fichier?
"folderA/folderB/folderC/abcd.csv"
mais c'est juste de l'objet. S3 les objets sont toujours les fichiers, pas les dossiers. (Même si par exemple dans S3 INTERFACE web folderA
etc n'apparaissent comme des dossiers si vous avez créé des objets avec ces clés.)C'est un doublon de Comment faire pour écrire un S3 objet dans un fichier?
OriginalL'auteur ZZzzZZzz | 2014-12-05
Vous devez vous connecter pour publier un commentaire.
D'abord, vous devez obtenir l'objet
InputStream
faire votre besoin.Passer le
InputStream
,File Name
et lapath
à la méthode ci-dessous pour télécharger votre flux.Après le Téléchargement de votre objet lire le fichier et de le rendre à
JSON
et de l'écrire pour.txt
fichier après que vous pouvez télécharger latxt
fichier souhaité un seau enS3
Oui. Il a aidé un peu. Merci
Les IO de code dans
saveFile()
, c'est bien plus compliqué que nécessaire. Comme indiqué dans le cette réponse, fondamentalementFiles.copy(objectData, new File("/my/path/file.jpg").toPath());
suffit.À l'aide de
available()
n'est pas recommandé, en fait, il est tout à fait découragé. Voir la javadoc pour une explication: lien. Fondamentalement, vous ne pouvez pas compter sur une mise en œuvre de retourner le nombre total d'octets dans le flux.OriginalL'auteur ashokramcse
Vous pouvez utiliser d'autres libs java pour le téléchargement ou la lecture de fichiers sans téléchargement.
Vérifier que le code s'il vous plaît, j'espère que c'est utile pour vous. Cet exemple pour PDF.
OriginalL'auteur Oguz