2012-01-11 19 views
6

me escribió esta clase:Comportamiento extraño del argumento de Java *

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 // clase compilada

He compilado por encima de clase y corro como: java ListArg *

Pero ListArg muestra el contenido del directorio actual en la consola y no "*".

Respuesta

4

EDIT: Parece que estaba equivocado y esto podría ser Java hacerlo después de todo. Si está usando un shell Unix, probablemente este sea solo el shell que realiza "globbing". Sin embargo, parece hacer lo mismo en Windows, lo que me sorprende (ya que la línea de comandos de Windows no realiza globbing de manera predeterminada).

Por desgracia, en Windows normal citando aparece para darle un argumento citado, es decir, si imprime args[0] haber corrido

java ListArg '*' 

se incluir la comilla simple. Estoy investigando si hay una forma de desactivar esto ... aunque eso funcionaría en un shell de Unix.

EDIT:. Hmm ... sin suerte hasta ahora en la gestión para tener una cadena de simplemente una estrella en Windows :(

2

Usted debe envolver con citas *: java ListArg '*' o java ListArg "*"

1

Este es el shell (a menos que esté en Windows) expandir * Trate de escapar al ponerlo entre comillas como "*".

Para mí en Windows XP usando comillas dobles funciona, "*" como argumento da el programa java * como argumento (sin comillas dobles y sin expansión). Tal vez esto es diferente para otras versiones de Windows.

+0

Puede ser - no puede ser. En Windows esto es hecho por Java.exe ... –

+0

Gracias Jon, edité mi respuesta un poco. –

+0

Desafortunadamente '\ *' en Windows enumera todos los archivos en el directorio raíz :( –

1

le da argumentos de línea de comandos entre comillas dobles y marca

+0

en windows, incluso sin comillas dobles, también funciona. Pero si se entregan comillas simples, las comillas simples también se imprimirán.ex: si le das a java ListArg 'john', te da 'john' como salida – johnkrishna

0

* es wildcard personaje que está pre-procesada por el terminal

similares a *, puede utilizar

  • *.*
  • *.txt .Este aparecerá una lista de archivos y carpetas con .txt como fin

y etc., Puedes probar que

Este link proporciona información sobre estos.

No solo funciona en Linux, sino también en Windows.