IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Fichier en mémoire


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Points : 46
    Points
    46
    Par défaut Fichier en mémoire
    Bonjour à tous !

    Dans le cadre d'un développement je dois créer un fichier zip.
    Si ce fichier zip dépasse une certaine valeur, le fichier doit être supprimé.

    L'idéal serait en fait que le fichier ne soit stocker sur disque qu'au moment où je vérifie la condition de sa taille. Autrement dit, le temps que je le remplisse, je souhaiterais qu'il reste en mémoire de la JVM, et non écrit.

    Or, lorsque l'on manipule les fichiers en Java, ceux-ci sont directement créés.

    Y-a-t-il une autre solution qui permet de créer un fichier en mémoire, et de ne le copier que plus tard sur le disque?

    Merci !

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux utiliser un ByteArrayOutputStream...
    Mais tu parles de quelle taille en mémoire ? Il serait peut-être plus simple de supprimer le fichier une fois créé. Non ?

    a++

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Points : 46
    Points
    46
    Par défaut
    Effectivement c'est avec ByteArrayOutputStream que j'ai fais au final (j'ai trouvé la réponse en anglais jsute après avoir poster ce message).

    Sinon, non je souhaiterais éviter le plus possible de charger le serveur de fichiers, même en le supprimant ensuite.

    De plus l'écriture en mémoire doit certainement être plus rapide. Lorsque je parle mémoire je parle de la mémoire vive utilisée par la JVM, en opposition à la mémoire dure des disques durs.

    Le but pour moi était de créer un mail contenant un fichier joint en zip. Dès le mail envoyé, le fichier peut-être détruit, donc garbagée en mémoire.

    Merci !

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lamoua76 Voir le message
    De plus l'écriture en mémoire doit certainement être plus rapide. Lorsque je parle mémoire je parle de la mémoire vive utilisée par la JVM, en opposition à la mémoire dure des disques durs.
    Oui mais si les fichiers sont "gros", tu risques de saturer la mémoire vive justement !

    Citation Envoyé par lamoua76 Voir le message
    Le but pour moi était de créer un mail contenant un fichier joint en zip. Dès le mail envoyé, le fichier peut-être détruit, donc garbagée en mémoire.
    Quelle API tu utilises pour l'envoi du mail ? Il est peut-être possible de généré le fichier à la volé pendant l'envoi...

    a++

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Points : 46
    Points
    46
    Par défaut
    Merci pour tes réponses. Saches que je travail souvent avec tes topics et articles .

    Pour ce qui est de l'API, j'utilise Spring (pas le choix).

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Je ne connais pas trop Spring mais il y a peut-être moyen de générer un inputStream dynamique via l'interface InputStreamSource...

    a++

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Points : 46
    Points
    46
    Par défaut
    Je me tourne effectivement vers cette solution

Discussions similaires

  1. Comment charger un fichier en mémoire ?
    Par Capt. Flame dans le forum Framework .NET
    Réponses: 10
    Dernier message: 27/09/2006, 18h40
  2. traitement de fichier TXT: mémoire insuffisante
    Par xherault dans le forum Delphi
    Réponses: 17
    Dernier message: 20/07/2006, 12h50
  3. Réponses: 1
    Dernier message: 17/03/2006, 00h19
  4. Réponses: 6
    Dernier message: 19/09/2005, 15h35
  5. Détourner une fonction pour copier un fichier en mémoire
    Par Rodrigue dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/11/2003, 08h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo