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

API standards et tierces Java Discussion :

[debutant] position fichier et portabilité (faq lue)


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 86
    Par défaut [debutant] position fichier et portabilité (faq lue)
    Bonjour,

    Tout d'abord désolé, mais je n'ai pas vraiment saisi ce qu'il y a dans la Faq à ce sujet...

    Dans mon projet, je me sers d'un fichier "donnees.txt" qui fait office de base de données pour le grand débutant que je suis. Le principe étant que mon appli lit ce fichier, le convertit en String et se dépatouille pour retrouver ce qu'elle veut.

    A l'heure actuelle ça fonctionne, mais je voudrais incorporer ce fichier avec le Jar executable destiné à être diffusé, et également assurer la portabilité sous Windows/Mac/Unix, chose que je ne fais pas encore...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    String ficSource="C:\\donnees.txt";
     
    //Importe le fichier Donnees
    public void importBaseDonnees (String ficSource) throws Exception{
    	BufferedReader in=new BufferedReader(new FileReader(ficSource));
    	String s2, s = new String();
    	while((s2 = in.readLine())!= null)
    		s += s2 + "\n";
    	in.close();
    	this.donnees=s;
    }
    Mes interrogations sont les suivantes :

    1- ce que je compte faire est-il possible ?

    2- faut-il se soucier de la décompression Jar ?

    3- Si la methode ci dessus fait partie d'une classe Z, située dans \WorkspaceEclipse\projet\src\Principal\Z.java

    avec le fichier dans \WorkspaceEclipse\projet\src\donnees.txt

    Comment faut-il coder tout ça ?


    Un million de mercis d'avance pour votre aide.

    (N'ayant pas vraiment le vocabulaire adhoc, si vous avez des suggestions pour changer le titre du message, n'hésitez pas ;-) )

  2. #2
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    C'est possible de lire (mais pas d'écrire!) dans un fichier situé à l'intérieur d'un JAR (et donc dans le "classpath" de lui-même si ce JAR est exécutable)...


    http://java.developpez.com/faq/java/...mentRessources
    http://java.developpez.com/faq/java/...on#creationJar


  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 86
    Par défaut
    Merci de ta réponse, cela répond à mes premières interrogations

    Par contre, j'ai toujours pas saisi le comment de ce qu'il y a dans la faq au sujet de la portabilité (separatorChar)

    http://java.developpez.com/faq/java/...chier_portable

    Quelqu'un peut'il fournir un exemple svp ?

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par absolut75
    Merci de ta réponse, cela répond à mes premières interrogations

    Par contre, j'ai toujours pas saisi le comment de ce qu'il y a dans la faq au sujet de la portabilité (separatorChar)

    http://java.developpez.com/faq/java/...chier_portable

    Quelqu'un peut'il fournir un exemple svp ?
    Ben, au lieu d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chemin = "dossier\\fichier";
    Il faut que tu écrives :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chemin = "dossier" + java.io.File.separatorChar + "fichier";

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    En java tu peus utiliser le / même sous Windows, si tu n'affiche pas les chemins à l'utilisateur cela t'évite d'avoir à utiliser File.separator dans ton code (c'est quand même moins long à écrire ). Par contre si tu dois afficher les chemins à l'utilisateur c'est mieux d'utiliser File.separator.

    PS : Avant que tu pose la question File.separator et la même chose que File.separatorChar si ce n'est que c'est un String au lieu d'un char .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 86
    Par défaut
    ok merci !

    ce qui me troublait c'etait comment justement définir le SeparatorChar, mais apparment ca se fait tout seul en fonction de la machine sur laquelle tourne le JRE.

    Bonne soirée

  7. #7
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Quelques remarques et conseil :

    • Utilises des bloc try/finally pour fermer les flux. Ainsi même en cas d'exception ton fichier sera proprement fermé.
    • Utilise un StringBuffer plutôt qu'une concaténation de Strign avec + qui peut être énormément couteuse dans une boucle.
    • Utilise un InputStream plutôt qu'un nom de fichier en paramètre. Ainsi il est plus simple de gérer différentes sources (fichier simple, dans un jar, socket...)
    • Utilise la propriété système "line.separator" plutôt que "\n" pour les fin de ligne, pour des raison de portabilité.
    Ce qui pourrait donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
        public void importBaseDonnees (InputStream stream) throws Exception {
            BufferedReader in=new BufferedReader(new InputStreamReader(stream));
            try {
                StringBuffer buffer = new StringBuffer();
                String endl = System.getProperty("line.separator");
                String line;
                while((line = in.readLine())!= null) {
                    buffer.append(line).append(endl);
                }
                this.donnees=buffer.toString();
            } finally {
                in.close();
            }
        }
     
        // Depuis un fichier :
        public void importBaseDonnees (File file) throws Exception {
            importBaseDonnees(new FileInputStream(file));
        }
     
        // Depuis un fichier dans un jar :
        public void importBaseDonnees (ClassLoader loader, String resourceName) throws Exception {
            importBaseDonnees(loader.getResourceAsStream(resourceName));
        }

    a++

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 86
    Par défaut
    Merci encore de ces conseils !

    a+

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

Discussions similaires

  1. [debutant]streamwriter et ecriture debut de fichier !
    Par ChristopheOce dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 27/01/2006, 11h08
  2. [debutant]lecture fichier ligne par ligne
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 13/11/2005, 19h02
  3. Réponses: 18
    Dernier message: 08/08/2005, 20h52
  4. [DEBUTANT]Le fichier spécifié est introuvable
    Par Battosaiii dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 04/04/2005, 16h36
  5. [langage] Ajout en debut de fichier
    Par WetzlarMan dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2004, 11h01

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