Lettura da System.in -Java [duplicato]


Questa domanda ha già una risposta qui:

Non sono sicuro di come dovresti leggere dall'input di sistema da un file Java.

Voglio essere in grado di chiamare java myProg < file

Dove file è ciò che voglio essere letto come una stringa e dato a myProg nel metodo principale.

Qualche suggerimento?

Author: Colonel Panic, 2011-03-30

8 answers

È possibile utilizzare System.in per leggere dallo standard input. Funziona proprio come entrare da una tastiera. Il sistema operativo gestisce il passaggio da file a standard input.

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

Bene, puoi leggere System.in stesso poiché è un InputStream valido. Oppure puoi anche avvolgerlo in un BufferedReader:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 16
Author: xappymah, 2011-03-30 15:03:39

Uso System.in, è un InputStream che solo serve a questo scopo

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

Si leggerebbe da System.inproprio come si farebbe per l'input da tastiera usando, ad esempio, InputStreamReadero Scanner.

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

In Java, l'input della console si ottiene leggendo da System.in. Per ottenere un carattere basato flusso collegato alla console, avvolgere System.in in un Lettore buffer oggetto. Lettore buffer supporta un flusso di input buffered. Il suo costruttore più comunemente usato è mostrato qui:

BufferedReader(Reader inputReader)

Qui, inputReader è il flusso che è collegato all'istanza di Lettore buffer cioè essere creare. Lettore è una classe astratta. Una delle sue sottoclassi concrete è InputStreamReader , che converte i byte in caratteri.

Per ottenere un InputStreamReader oggetto collegato a System.in, utilizzare il seguente costruttore:

InputStreamReader(InputStream inputStream)

Perché System.in si riferisce a un oggetto di tipo InputStream, può essere utilizzato per inputStream. Mettendo tutto insieme, la seguente riga di codice crea un Lettore buffer questo è collegato alla tastiera:

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

Dopo l'esecuzione di questa istruzione, br è un flusso basato su caratteri collegato alla console attraverso System.in.

Questo è tratto dal libro Java- The Complete Reference by Herbert Schildt

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

Puoi chiamare 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

Probabilmente stai cercando qualcosa di simile.

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