Besoins d'explications sur les classes de base et de son utilisation
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:
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:
Citation:
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:
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
Pouvez-vous m'aider ?
Merci d'avance,
Yves