JAVA bufferedreader sur le fichier meme

____22 Messages postés 101 Statut Membre -  
 ahha78944 -
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 10414 Statut Contributeur 1 293
 
En même temps vouloir ouvrir un fichier sans connaitre son nom ...
1
____22 Messages postés 101 Statut Membre 1
 
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 1030 Statut Contributeur 329 > ____22 Messages postés 101 Statut Membre
 
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 101 Statut Membre 1 > Marco la baraque Messages postés 1030 Statut Contributeur
 
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 1030 Statut Contributeur 329 > ____22 Messages postés 101 Statut Membre
 
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 1030 Statut Contributeur
 
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 10414 Statut Contributeur 1 293
 
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 1030 Statut Contributeur 329
 
Bonsoir,
BufferedReader br=new BufferedReader(new FileReader(new File("C:/toto.txt")));


Cordialement,
0
____22 Messages postés 101 Statut Membre 1
 
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 10414 Statut Contributeur 1 293
 
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 1030 Statut Contributeur 329
 
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 10414 Statut Contributeur 1 293
 
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 101 Statut Membre 1
 
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
Julie54
 
coucou!!
Tout le monde va bien ici??:D
0