0

Estoy teniendo un problema al intentar acceder y comprobar los parámetros pasados por la terminal al ejecutar el programa. La cosa es que tengo este código:

public static void main(String[] args) {

        BufferedReader buffer;
        FileReader urls;
        String line, arg;
        int count = 0;
        try {
            if( args.length > 0){
                if(args[0] == "-f"){
                    urls = new FileReader(args[1]);
                    buffer = new BufferedReader(urls);

                    while ((  line = buffer.readLine())!= null){

                        new Thread(new Downloader(line,count)).start();
                        count++;
                    }        
                    buffer.close();
                    System.out.println("totes les Tasques doandes.");  
                }else{
                System.out.println("Please Provide a File name by option -f.");
                }  
            }else 
            {
                System.out.println("Please provide parameters to execute  the program.");
            }   

        } catch (Exception e) {
            e.printStackTrace();
        }
}

al ejecutar lo en el terminal y con la instrucción java Main -f urls.txt me salta siempre a "Please Provide a File name by option -f." esto lo haga después de haber compilado mi clase Main con javac Main.java, he debugado el programa y he visto que el valor de args[0] es efectivamente -f pero la comparación me da el resultado false y no sé a que debe ser.

blurfus
  • 123
  • 6
Panda.V5
  • 3
  • 1

2 Answers2

2

En esta linea de codigo:

if(args[0] == "-f"){

Estas comparando Strings con el signo de igualdad (==) en vez de usar el metodo .equals(...) o .equalsIgnoreCase(...) <- intenta eso.

Es decir, cambialo a:

if ("-f".equals(args[0])) {

(actualizado para usar la constante antes de la variable, lo que es recomendado para evitar NullPointerException o NPE)

blurfus
  • 123
  • 6
0

Podrias probar con:

if (new String(args[0]).equals("-f"))
bucareyg
  • 34
  • 2