JAVA bufferedreader sur le fichier meme

Fermé
____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012 - 17 janv. 2009 à 00:21
 ahha78944 - 9 mai 2009 à 17:30
Bonjour,
comment ouvrir un buffered reader sur le fichier source qu'on est en train d'utiliser

par ex :
BufferedReader br=new BufferedReader(new FileReader(qu'est ce que je mets ici?));
A voir également:

7 réponses

arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
17 janv. 2009 à 15:15
En même temps vouloir ouvrir un fichier sans connaitre son nom ...
1
____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012 1
17 janv. 2009 à 17:03
le nom c'est le nom du fichier utilisé pour ouvrir le bufferReader

mais j'ai besoin d'un truc generique parceque c'est un truc automatisé
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329 > ____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012
18 janv. 2009 à 01:31
Bonsoir,
Le nom du fichier utilisé pour ouvrir le bufferedReader... ? Ce n'est pas franchement clair. Tu veux dire le nom du fichier contenant la classe dans laquelle le BufferedReader est instancié?

Si tu veux un truc générique (même si je ne comprends pas pourquoi vu qu'en principe tu ne donnes pas tes sources à tout le monde), il faut déjà que tu respectes certains principes :
- ton BufferedReader ne doit pas être défini dans une classe anonyme
- ton BufferedReader ne doit pas être défini dans une inner class (en français on doit dire "classe interne", mais je n'en suis pas sûr)
- si la classe dans laquelle est définie le BufferedReader s'appelle Toto, il faut que le fichier s'appelle Toto.java (ça en principe c'est les normes Sun)

Une fois que tout est ok, tu utilises un getClass().getResourceAsStream("tachaine");
Ca te fournira un Stream (tu castes en FileInputStream au besoin).
Enfin, le string "tachaine", il faut le contruire avec l'emplacement de ton fichier Toto.java
Par exemple, si ce fichier se trouve dans le package com.ccm.basic, alors tachaine devra valoir com/ccm/basic/Toto.java. Pour récupérer ça, je te conseille de jouer avec les méthodes suivantes (je ne connais pas trop, mais tu devrais trouver ton bonheur) :
- getClass().getName()
- getClass().getCanonicalName()
- getClass().getSimpleName()
et avec les méthodes de la classe String pour modifier les . en / par exemple

Cordialement,
0
____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012 1 > Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009
18 janv. 2009 à 17:27
merci

est ce que getClass().getName retourne de nom de la classe utilisée par l'appel de cette fonction

si oui ça serait bien
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329 > ____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012
18 janv. 2009 à 20:49
Bonsoir,
this.getClass().getName() retourne le nom de la classe conteneur (ie la classe dans laquelle est définie la méthode dans laquelle tu fais appel à this.getClass().getName()).
Par contre je ne pense pas que ça te donne le package de cette classe (et pour pouvoir lire le fichier, il faut savoir dans quel package cette classe se trouve).

Cordialement,
0
ahha78944 > Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009
9 mai 2009 à 17:30
essaie:

java.net.URL url =config.getServletContext().getResource("test.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));

System.out.println("ligne 1: "+br.readLine();+", et ligne 2: "+br.readLine();");

System.out.println("nombre de caractères: "+br.read);
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
17 janv. 2009 à 00:30
Hmm perso je n'y ai jamais réfléchi sinon peut être essayé d'ouvrir le fichier en lecture seule si jamais l'ouverture normale ne marche pas? Par contre ça j'ai jamais cherché comment faire j'avoue ...
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
17 janv. 2009 à 00:31
Bonsoir,
BufferedReader br=new BufferedReader(new FileReader(new File("C:/toto.txt")));


Cordialement,
0
____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012 1
17 janv. 2009 à 14:18
qu'est ce que je mets à la place de toto.txt
je veux que ce soit le nom du fichier utilisé mais sans connaitre son nom
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
17 janv. 2009 à 00:49
Hello marco mais imaginons que le fichier est déjà ouvert cela ne va-t-il pas lever une exception?

Remarque je suis peut être con puisque BuffreredReader veut dire ... :)

Enfin bon j'y ai jamais songé non plus :D (pour ma défense ^^)
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
17 janv. 2009 à 01:03
Salut Arth,
Au niveau de l'exception, je ne pense pas (après faudrait tester effectivement, parce que je n'en sais rien non plus ^^).
Remarque je suis peut être con puisque BuffreredReader veut dire ... :) Veut dire quoi? Le flux est bufferisé afin de limiter le nombre d'appels système et ainsi augmenter les performances. Mais je ne vois pas en quoi ça a un rapport avec un problème d'accès concurrentiel.

En fait je pense que la question n'est pas très claire, et donc que toi comme moi on s'embrouille un petit peu. Que signifie "le fichier source qu'on est en train d'utiliser?". Pour moi, c'est le fichier .java dans lequel ce code est écrit.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
17 janv. 2009 à 02:01
Non en fait je crois que il veut pouvoir ouvrir un fichier alors qu'il est en cours d'utilisation.

Mais pour le mot "veut dire" bah tout simplement ça signifie Buffer de lecture donc voilà pourquoi je me suis dit que j'étais bête puisque on ouvre un flux de lecture et non d'écrite comme le BufferedWriter, qui lui à mon avis serait pas content !! ^^
0
____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012 1
17 janv. 2009 à 14:51
il me faut un truc comme :

BufferedReader br=new BufferedReader(new FileReader(new File(this))); 


sauf que avec this ça a pas de sens

MERCI pour toute aide
0
coucou!!
Tout le monde va bien ici??:D
0