Lecture à partir de System.in -Java [dupliquer]


Cette question a déjà une réponse ici:

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

Je veux pouvoir appeler java myProg < file

Où le fichier est ce que je veux lire en tant que chaîne et donné à myProg dans la méthode principale.

Des suggestions?

Author: Colonel Panic, 2011-03-30

8 answers

Vous pouvez utiliser System.in pour lire à partir de l'entrée standard. Cela fonctionne comme la saisie à partir d'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());
    }
}
 50
Author: corsiKa, 2018-04-29 06:00:32

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));
 16
Author: xappymah, 2011-03-30 15:03:39

Utilisation System.in, c'est un InputStream qui sert juste à cet effet

 4
Author: Riccardo Cossu, 2011-03-30 15:01:29

Vous lirez à partir de System.incomme vous le feriez pour la saisie au clavier en utilisant, par exemple, InputStreamReaderou Scanner.

 4
Author: Isaac Truett, 2011-03-30 15:05:04

En Java, l'entrée de la console est réalisée en lisant depuis System.in. Pour obtenir un caractère basé flux, qui est attaché à la console, wrap Système.dans dans un BufferedReader objet. BufferedReader prend en charge un tampon du flux d'entrée. Son constructeur le plus couramment utilisé est montré ici:

BufferedReader(Reader inputReader)

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

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

InputStreamReader(InputStream inputStream)

Parce que System.in fait référence à un objet de type Flux d'entrée, il peut être utilisé pour inputStream. Mettre tout cela ensemble, la ligne suivante de code 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 qui est lié à la console par System.in.

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

 3
Author: Shirgill Farhan Ansari, 2016-05-05 18:21:25

Vous pouvez appeler java myProg arg1 arg2 ... :

public static void main (String args[]) {
    BufferedReader in = new BufferedReader(new FileReader(args[0]));
}
 1
Author: Collin Price, 2013-09-17 12:33:41

Vous cherchez probablement quelque chose comme ça.

FileInputStream in = new FileInputStream("inputFile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
 -4
Author: user3765147, 2014-06-22 17:35:10
class myFileReaderThatStarts with arguments
{

 class MissingArgumentException extends Exception{      
      MissingArgumentException(String s)
  {
     super(s);
  }

   }    
public static void main(String[] args) throws MissingArgumentException
{
//You can test args array for value 
if(args.length>0)
{
    // do something with args[0]
}
else
{
// default in a path 
// or 
   throw new MissingArgumentException("You need to start this program with a path");
}
}
 -5
Author: Robert Quinn, 2013-07-16 04:12:31