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

avec Java Discussion :

Soucis avec File


Sujet :

avec Java

  1. #1
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut Soucis avec File
    Bonjour,

    Dans un programme j'ai besoin de récupérer des fichiers html stockés en base de données. Je récupère ces fichiers dans des objets File.

    Le soucis c'est que lorsque que je récupère ces fichiers, je ne sais pas encore où les sauvegarder (cela arrive plus tard dans l'application).

    Je voulais donc savoir si c'était possible de créer un fichier juste en mémoire RAM (ou fichier temporaire) puis plus tard dans l'application quand l'utilisateur choisit le chemin, je voudrai y placer ces fichiers. Le seul soucis c'est que si je crée un File, il crée automatiquement le fichier physique.

    L'idéal serait de garder des objets File mais sans que le fichier ne soit crée physiquement. Est ce possible ?

    Bien sûr je suis ouvert à d'autres propositions pour réaliser cela.

    Merci d'avance pour vos réponses...

    Contrec.
    Contrec

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Non. un File, ça représente grosso-modo un path sur le file system - un File peut ne pas exister du tout sur le disque. Si je fais File f = new File("C:\\x.txt"), mon objet f n'est pas null pourtant C:\x.txt peut ne pas exister.

    Pour des données binaires en RAM, il y a les stream: ByteArrayOutputStream et ByteArrayInputStream notament...

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  3. #3
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Pourtant quand je crée un File("Toto") il me créer des File physiques dans mon répertoire d'Eclipse...

    Après la solution de ByteArray est pas mal, mais je préfère dans la mesure du possible rester avec des File
    Contrec

  4. #4
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par Contrec Voir le message
    Pourtant quand je crée un File("Toto") il me créer des File physiques dans mon répertoire d'Eclipse...
    non, à moins d'invoquer createNewFile, ou bien de l'utiliser dans un FileOutputStream

    Citation Envoyé par Contrec Voir le message
    Après la solution de ByteArray est pas mal, mais je préfère dans la mesure du possible rester avec des File
    on ne peut pas, un File (java.io.File) représente un fichier sur le file system, et pas un ensemble arbitraire de byte situés dans la ram ou sur le réseau ou n'importe ou ailleurs.

    http://java.sun.com/j2se/1.4.2/docs/...a/io/File.html
    An abstract representation of file and directory pathnames.

    User interfaces and operating systems use system-dependent pathname strings to name files and directories. This class presents an abstract, system-independent view of hierarchical pathnames. An abstract pathname has two components:[...]
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  5. #5
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Voici mon code qui récupère les fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try {
        byte[] fileBytes = myResultSet.getBytes(myColumn);
        File myFile = new File("File_" + String.valueOf(System.currentTimeMillis()));
        OutputStream out = new FileOutputStream(myFile);
        System.out.println(myFile.getAbsolutePath());
        out.write(fileBytes);
        correspColValues.put(myColumn, myFile);
    } catch (FileNotFoundException e) {
        this.addDbError(e.getMessage());
    } catch (IOException e) {
        this.addDbError(e.getMessage());
    }
    Et je reconfirme que les fichiers sont crées physiquement. Par contre en effet tant que je n'écris pas dedans, il n'est pas véritablement crée... Tu confirmes que j'ai bien compris ?

    Et merci pour les infos
    Contrec

  6. #6
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par Contrec Voir le message
    Tu confirmes que j'ai bien compris ?
    yep c'est ça

    pour rester en ram il faudrait utiliser un ByteArrayOutputStream au lieu du FileOutputStream, et passer le bytearray ou un new ByteArrayInputStream(baos.toByteArray()) au lieu du File.

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  7. #7
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Bah je crois que je vais directement renvoyer le byte[] et après on construira le fichier...

    Merci beaucoup !!!

    Ah si dernière question, pourquoi quand je veux écrire le fichier je perd son extension ? J'enregistre des .html mais il me sort des fichiers sans extensions...

    Je pourrais la rajouter manuellement +".hmtl" mais ça doit rester générique... Comment récupérer l'extension ?
    Contrec

  8. #8
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    hum pas beaucoup de solutions génériques...

    il y a la classe MimeTypeFileTypeMap qui permet de renvoyer un type mime à partir d'une extension de fichier. Pour l'inverse je ne connais rien, mais ça doit pouvoir se trouver.

    Perso je ne suis jamais trop posé la question: j'ajoute les extensions en dur...

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  9. #9
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Le seul soucis c'est que je développe un plugin base de données... Donc aujourd'hui ce sera utilisé pour des .html mais après il faut que ce soit générique.

    Si jamais je trouve la solution j'essayerai de venir la poster ici si je n'oublie pas.

    Quoi qu'il en soit je te remercie pour ton aide ! (à la prochaine)


    Contrec
    Contrec

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Souci avec asp:FileUpload ou inout:file et IIS7
    Par John.BE dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 16/03/2014, 11h44
  2. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

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