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?));
Configuration: Windows XP
Firefox 3.0.5

7 réponses

  1. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    En même temps vouloir ouvrir un fichier sans connaitre son nom ...
    1
    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
      1. 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
      2. ____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
      3. 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
      4. 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
  2. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    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
  3. Marco la baraque Messages postés 1030 Statut Contributeur 329
     
    Bonsoir,
    BufferedReader br=new BufferedReader(new FileReader(new File("C:/toto.txt")));


    Cordialement,
    0
    1. ____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
  4. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    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
    1. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    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
  7. ____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
  8. Julie54
     
    coucou!!
    Tout le monde va bien ici??:D
    0