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?
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());
}
}
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));
Uso System.in, è un InputStream che solo serve a questo scopo
Si leggerebbe da System.in
proprio come si farebbe per l'input da tastiera usando, ad esempio, InputStreamReadero Scanner.
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
Puoi chiamare java myProg arg1 arg2 ...
:
public static void main (String args[]) {
BufferedReader in = new BufferedReader(new FileReader(args[0]));
}
Probabilmente stai cercando qualcosa di simile.
FileInputStream in = new FileInputStream("inputFile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
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");
}
}