web-dev-qa-db-fra.com

Lecture à partir de System.in - Java

Je ne sais pas comment vous êtes censé lire à partir d'une entrée système d'un fichier Java.

Je veux pouvoir appeler Java myProg < file

Où le fichier est ce que je veux être lu dans une chaîne et donné à myProg dans la méthode principale.

Aucune suggestion?

35
Alex

Vous pouvez utiliser System.in pour lire depuis l'entrée standard. Cela fonctionne comme si vous entriez dans un clavier. Le système d'exploitation gère le passage du fichier à l'entrée standard.

class MyProg {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Printing the file passed in:");
        while(sc.hasNextLine()) System.out.println(sc.nextLine());
    }
}
58
corsiKa

Eh bien, vous pouvez lire System.in lui-même car c’est un InputStream valide. Ou aussi vous pouvez l'envelopper dans un BufferedReader:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
19
xappymah

En Java, l’entrée de la console est obtenue en lisant System.in. Pour obtenir un flux basé sur des caractères attaché à la console, encapsulez System.in dans un objet BufferedReader. BufferedReader prend en charge un flux d'entrée mis en mémoire tampon. Son constructeur le plus couramment utilisé est montré ici:

BufferedReader(Reader inputReader)

Ici, inputReader est le flux lié à l'instance de BufferedReader en cours de création. Reader est une classe abstraite. L'une de ses sous-classes concrètes est InputStreamReader, qui convertit les octets en caractères.

Pour obtenir un objet InputStreamReader lié à System.in, utilisez le constructeur suivant:

InputStreamReader(InputStream inputStream)

Comme System.in fait référence à un objet de type InputStream, il peut être utilisé pour inputStream. En réunissant tout cela, la ligne de code suivante crée un BufferedReader qui est connecté au clavier:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

Après l'exécution de cette instruction, br est un flux basé sur des caractères lié à la console via System.in.

Ceci est tiré du livre Java- The Complete Reference by Herbert Schildt

5
Shirgill Farhan

Utilisez System.in, il s’agit d’un InputStream qui sert uniquement à cela.

5
Riccardo Cossu

Vous liriez de System.in comme vous le feriez pour une entrée au clavier en utilisant, par exemple, InputStreamReader ou Scanner .

4
Isaac Truett

Tu peux appeler Java myProg arg1 arg2 ...:

public static void main (String args[]) {
    BufferedReader in = new BufferedReader(new FileReader(args[0]));
}
1
Collin Price