Bonjour tout le monde,


Dans l'exemple ci-dessous de Jeam-Michel Doudoux (Développons en Java), je n'ai pas encore le déclic sur cette façon d'instancier (voir ligne du BufferedReader) et le choix des classes et méthodes pour arrriver à afficher le contenu, j'explique plus bas mon raisonnement:



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
27
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
 
public class TestRuntime2 
{
  public static void main(String[] args) 
  {
    try 
      {
        Runtime runtime = Runtime.getRuntime();
        Process proc = runtime.exec("cmd.exe /c set");
        BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
        String str;
        while ((str = in.readLine()) != null) 
          {
            System.out.println(str);
          }
        in.close();
        proc.waitFor();
      } 
  catch (Exception e) 
    {
      e.printStackTrace();
    }
  }
}
Ma façon de comprendre/de faire est la suivante:
1 - La méthode getInputStream va retourner une classe au nom de InputStream.
2 - Avec Cette classe InputStream, je ne peux pas encore afficher le contenu (résultat) sur mon écran.
3 - Comme je ne connais pas toutes les classes et méthodes de Java, je fais une recherche grâce à l'outil http://javasearch.developpez.com
4 - Je clic sur 6.0, j'encode InputSream dans la zone d'encodage, je clic sur classes et j'appuie sur OK
5 - J'obtiens une liste de 34 classes correspondant à ma recherche
6 - Je me focalise sur le package java.io du fait que je veux voir le résultat (entrée, sortie) cela me semble logique
7 - Il me reste les classses suivantes:
BufferedInputStream ; ByteArrayInputStream; DataInputStream ; FileInputStream ; FilterInputStream ; InputStream ; InputStreamReader ; LineNumberInputStream ; ObjectInputStream ; ObjectInputStream.GetField ; PipedInputStream ; PushbackInputStream ; SequenceInputStream ; StringBufferInputStream
8 - A ce moment, je commence à me perdre qu'elle est la classe que je dois choisir !!!
9 - Bon ok je prends InputStreamReader parce qu'il est noté Reader mais je ne suis pas convaincu, je trouve cela trop façile/léger (pq pas la classe ObjectInputSream ou autres) ?
10 - InputStreamReader m'offre quelques méthodes basées sur la lecture de caractère pas très pratique.
11 - Je remarque que la classe InputStreamReader hérite de la classe java.io.Reader
12 - Je vois que la classe InputStreamReader hérite de la classe java.io.Reader
13 - Je vois que cette classe java.io.Reader à des sous classes, je prends la sous classe BufferedReader car celle-ci contient une méthode qui me permet d'afficher ma ligne de texte.

Je ne sais pas si ma façon de faire est bonne, je n'ai pas l'impression, qu'en pensez-vous ?
Dois-je connaitre toutes les classes et méthodes de java ?
Dois-je utiliser une autre approche pour élaborer mon code/programme ?
Dois-je chercher des exemples sur Google pour avoir un bout de code pour savoir comment afficher du texte à partir d'une classe précise ?
Est-qu'il existe un diagramme des classes de base de Java afin d'avoir une meilleur visualisation (relation entre elle ainsi que les méthodes) ?

Bref, je suis un peu perdu (noyé par tous les choix: classes et méthodes) !

En outre, n'y-a-t'il moyen d'instancier différement (voir ci-dessous), car étant débutant, je trouve cela hard (pas très lisible)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));

Pouvez-vous m'aider ?

Merci d'avance,

Yves