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 :

Ecrire dans un fichier du classPath


Sujet :

Entrée/Sortie Java

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut Ecrire dans un fichier du classPath
    Bonjour a tous,

    Je cherche comment faire pour écrire dans un fichier txt contenue dans mon classPath.

    En faite, je veux vider ce fichier, puis le remplir avec le contenu d'un vector de String.

    j'ai produit le code ci dessous, mais il me déclenche un nullPointerException a l’exécution ...

    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
    25
    26
     
    public void writeFileFilter(Vector<String> filtre) {
    		File fichier=new File(getClass().getResource("resources/filtre.txt").getFile());
     
     
    		FileWriter writer = null;
    		try{
    		     writer = new FileWriter(fichier,false);
     
    		     for(String sfiltre : filtre)		     
    		    	 writer.write(sfiltre,0,sfiltre.length());
     
    		}catch(IOException ex){
    		    ex.printStackTrace();
    		}finally{
    		  if(writer != null){
    		     try {
    				writer.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		  }
    		}
     
    	}
    Je précise que le chemin est bon, vue que j'utilise le même pour faire de la lecture sur le fichier dans une autre méthode.

    Donc savez vous comment faire pour résoudre mon problème ?

    Je vous remercie d'avance pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    en règle générale, on ne peux pas écrire dans une ressource du classpath. Celle-ci pouvant se trouver à l'intérieur d'un jar ou d'un ear, vouloir en faire un File n'a aucun sens. De plus, la méthode getFile ne fait vraisemblablement pas ce que vous voulez. Si l'url est http://server/document.txt, getFile retournera /document.txt, pas très utile pour y accéder.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    - À titre d'information, ce qui est dans ton classpath ne sera pas toujours accessible en écriture, et à mesure que tu utiliseras des outils de packaging tu verras qu'ils ne t'en laissent pas la possibilité, ou alors c'est par hasard.

    - La ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    writer.write(sfiltre,0,sfiltre.length());
    est équivalente à :

    - Ce serait plus clair si tu nous avais donné la stacktrace et indiqué quelle ligne elle indique.
    Ce que tu feras désormais, sans jamais imaginer que tu peux t'en passer, partout, toujours, jusqu'à ce que la mort t'en empêche.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut
    Tout d'abord, merci pour vos réponse.

    L'erreur viens de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File fichier=new File(getClass().getResource("resources/filtre.txt").getFile());
    Donc, vous me dite que l'écriture n'est pas possible dans un fichier du classPath, mais dans ce cas, comment faire pour sauvegarde en dur de petits réglage du soft ?

    Je voulais distribuer le soft après, juste avec le .jar et non un dossier avec le .jar et un .ini

    Donc est t'il possible d'écrire tout de même dans ce fichier ? Ou alors comment faire pour garder mes réglage ?

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    en général, on lit la config "par défaut" de l'application, et on viens mettre au dessus la configuration personnalisée de l'utilisateur, qu'on sauve et charge depuis, par exemple sa home directory (accessible à partir de System.getProperty("user.home"))

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut
    Pourrai tu me donner un exemple, je ne comprend pas trés bien ce que tu veux dire?

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben tu stocke la config par défaut dans ton application, tu la charge comme tu le fait déjà.

    Ensuite tu charge des données à part (depuis un fichier dans la home directory par exemple) et tu utilise l'information dans ce ficheir pour connaitre les préférences de l'utilisateur poru ton application. Et quand il les modifie, c'est se fichier là que tu charge.

  8. #8
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut
    il faut donc que je creer un fichier dans le home directory de l'utilisateur.
    Il y a t'il moyen de le rendre cacher ? (sous unix, il suffit de le faire commencé par un point, mais sous windows ... aucune idée )

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pourquoi vouloir le cacher? en général on veux plutot que l'utilisateur puisse le modifier à la main si un jour il fat une fausse manip, ou qu'il puisse l'effacer pour revenir à la config par défaut :/


    Si tu veux rendre "compliquées" les modficifation, tu peux t'orienter vers l'api preferences qui, sous linux, stocke dans un fichier et sous windows dans la base de registres

  10. #10
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut
    c'est pour eviter que l'utilisateur ce retrouve avec un fichier visible directement dans son home directory. Ce n'est pas super de voir 50 fichiers de config dans son home ....

    Je demande juste ça pour que cela soit "propre" du point de vue user

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

Discussions similaires

  1. Ecrire \" dans un fichier
    Par photorelief dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2005, 15h56
  2. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 12h01
  3. Ecrire dans un fichier
    Par gibet_b dans le forum Linux
    Réponses: 5
    Dernier message: 25/04/2005, 20h11
  4. Ecrire dans un fichier grace à un trigger ?
    Par zigoo dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/10/2004, 20h03
  5. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44

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