Comment enregistrer le fichier dans la mémoire et lire le fichier flux de sortie?
Quand j'ai enregistrer le fichier que j'utilise:
File file = new File(filename);
Mais, depuis je n'ai plus de privilèges pour écrire dans des dossiers, je voudrais plutôt pour l'enregistrer dans la mémoire et ensuite lire le fichier à FileOutputStream.
J'ai lu, je peux enregistrer le fichier dans la mémoire avec cette approche:
new ByteArrayOutputStream();
Comment tout le code ressemble? Je peux pas comprendre comment l'écrire correctement après le téléchargement est terminé.
Edit: je suis en utilisant Vaadins télécharger le plugin:
public File file;
public OutputStream receiveUpload(String filename,
String mimeType) {
//Create upload stream
FileOutputStream fos = null; //Stream to write to
file = null;
if(StringUtils.containsIgnoreCase(filename, ".csv")){
try {
file = new File(filename);
fos = new FileOutputStream(file);
} catch (final java.io.FileNotFoundException e) {
new Notification("Error", e.getMessage(), Notification.Type.WARNING_MESSAGE)
.show(Page.getCurrent());
return null;
}
} else {
new Notification("Document is not .csv file", Notification.Type.WARNING_MESSAGE)
.show(Page.getCurrent());
return null;
}
return fos; //Return the output stream to write to
}
- pourquoi avez-vous besoin de "sauver" il de la mémoire? le contenu de la mémoire "après le téléchargement est terminé" (peut-être que
byte[]
ouString
) - "Comment l'ensemble du code ressemble?" Essayez-le, et revenez si vous avez une question spécifique.
- sharobn.. comment puis-je récupérer ces contenus? Mon code est affiché T. J. Crowder. La Question est de savoir comment collecter des données sans écrire sur le disque et obtenir FileOutputStream de données
- Il vous suffit de modifier cette méthode pour retourner
return new ByteArrayOutputStream();
. Vous pouvez utiliserByteArrayOutputStream
que tout autreOutputStream
.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir le contenu écrit dans le flux de l'aide:
Ou vous pouvez écrire le contenu à l'autre OutputStream:
Ou:
.toByteArray()
, parce qu'ils nécessiteront un complément d'allocation de tableauQu'est-ce que ma recommandation:
Buffer
classe de okio de la bibliothèque. Il est mémorisée dans la mémoire et le soutien InputStream/OutputStream liaisonsDonc, à court code sera: