2012-01-11 25 views
6

ho scritto questa classe:strano comportamento del Java Argomento *

public class ListArg { 
    public static void main(String args[]) 
    { 
     for(int i=0;i<args.length;i++) 
     { 
      System.out.println(args[i]); 
     } 
    } 
} 

javac ListArg.java // classe compilata

ho compilato sopra delle classi e correre come: java ListArg *

Ma ListArg sta visualizzando il contenuto della directory corrente su console e non su "*".

risposta

4

EDIT: Sembra che mi sbagliavo e questo potrebbe essere Java a farlo, dopo tutto. Se stai usando una shell Unix, probabilmente questa è solo la shell che esegue "globbing". Tuttavia, sembra che faccia lo stesso su Windows, il che mi sorprende (dato che la riga di comando di Windows non esegue il globbing di default).

Purtroppo, su Windows normale citando sembra dare un argomento citato, vale a dire se si stampa args[0] hanno percorso

java ListArg '*' 

sarà includerà il singolo preventivo. Sto indagando se c'è un modo per disabilitare questo ... anche se funzionerebbe su una shell Unix.

EDIT:. Hmm ... senza fortuna finora nella gestione di avere una serie di solo una stella in Windows :(

2

Si dovrebbe avvolgere * con le citazioni: java ListArg '*' o java ListArg "*"

1

Questa è la vostra shell (a meno che non siete su Windows) in espansione * Prova la fuga inserendolo tra virgolette come "*".

Per me su Windows XP utilizzando doppi apici funziona, "*" come argomento fornisce il programma java * come argomento (senza virgolette doppie e senza espansione). diverso per le altre versioni di Window

+0

Potrebbe essere - potrebbe non esserlo. Su Windows questo è fatto da Java.exe ... –

+0

Grazie Jon, ho modificato la mia risposta un po '. –

+0

Sfortunatamente '\ *' su Windows elenca tutti i file nella directory principale :( –

1

fornire gli argomenti della riga di comando tra virgolette e verificare

+0

in windows anche senza virgolette funziona anche. Ma se metti tra virgolette singole, anche le virgolette singole verranno stampate.ex: se si assegna a java ListArg 'john', si ottiene 'john' come output – johnkrishna

0

* è wildcard carattere che viene pre-elaborata dal terminale

Simile a *, è possibile utilizzare

  • *.*
  • *.txt .Questo presenterà l'elenco di file e cartelle con .txt come fine

e così via, puoi provare che

Questo link fornisce informazioni su questi.

Non funziona solo su Linux, ma anche su Windows.