2009-06-28 14 views

Respuesta

26

Sólo se pasa la ruta del archivo, dentro de su programa utilice la clase Java de archivos para manejarlo

Esto toma el primer parámetro como la ruta del archivo:

import java.io.File; 

public class SomeProgram { 
    public static void main(String[] args) { 
     if(args.length > 0) { 
      File file = new File(args[0]); 

      // Work with your 'file' object here 
     } 
    } 
} 
+0

me puede decir más acerca de lo que quiere decir con "arg [0]" No pude encontrar la fuente útil para leer el tema de línea de comandos.: (((( – Johanna

+0

Lea la sección "el método principal" en http://java.sun.com/docs/books/tutorial/getStarted/application/index.html. Describe razonablemente bien qué es "args". El tutorial en sí es una buena fuente para encontrar la respuesta a una serie de preguntas que ha tenido. –

+0

@Johanna: El argumento [0] está accediendo a los argumentos de la matriz de cadenas en la posición 0 (el primer elemento de la matriz). args se pasa como un parámetro al método principal (String [] args), y es una matriz de cadenas que contiene los argumentos de la línea de comandos pasados ​​al programa. – Sean

7

en Java, la main método recibe una matriz de cadena como argumento, como probablemente haya notado. puede dar otro nombre al parámetro args, pero este es el más usado.

la matriz args contiene los valores de lo que el usuario ha escrito al iniciar su programa, después del nombre de la clase. por ejemplo, para ejecutar una clase llamada Foo, el usuario debe escribir:

[usuario @ escritorio ~] $ java Foo

todo lo que el usuario escribe después del nombre de la clase es considerado como un parámetro . por ejemplo:

[usuario @ escritorio ~] $ java Foo barra de Baz

ahora su programa ha recibido dos parámetros: barra de y Baz. esos parámetros se almacenan en la matriz args. como una matriz Java normal, el primer parámetro se puede recuperar accediendo a args[0], el segundo parámetro se puede recuperar accediendo a args[1], y así sucesivamente. si intenta acceder a una posición no válida (cuando el usuario no escribió lo que esperaba), esa declaración arrojará un ArrayIndexOutOfBoundsException, como lo haría con cualquier matriz. puede verificar cuántos parámetros se escribieron con args.length.

Así que volviendo a su pregunta. el usuario puede informar un nombre de archivo como un parámetro de línea de comando y puede leer ese valor a través del argumento del método main, generalmente llamado args. tienes que comprobar si realmente escribió algo como argumento (verificando la longitud de la matriz), y si está bien, tienes acceso al args[0] para leer lo que ha escrito. luego, puede crear un objeto File basado en esa cadena, y hacer lo que quiera hacer con él. siempre verifique si el usuario ingresó la cantidad de parámetros que espera, de lo contrario obtendrá una excepción al acceder a la matriz.

aquí es un ejemplo completo de cómo utilizar los parámetros de línea de comandos:

public class Foo { 
    public static void main(String[] args) { 
     if (args.length == 0) { 
      System.out.println("no arguments were given."); 
     } 
     else { 
      for (String a : args) { 
       System.out.println(a); 
      } 
     } 
    } 
} 

esta clase será analizar los parámetros informados por el usuario. si no ha escrito nada, la clase imprimirá el mensaje "no se dieron argumentos". si informa cualquier cantidad de parámetros, esos parámetros se mostrarán en la pantalla. Por lo tanto, la ejecución de este tipo con los dos ejemplos que he dado en esta respuesta, la salida sería:

[usuario @ escritorio ~] $ java Foo se les dio
sin argumentos.
[usuario @ escritorio ~] $ java barra de Foo Baz
barra
Baz

2

En mi opinión, las mejores prácticas para tratar de detectar args == 0 y devolver una lista de comandos de ayuda sobre cómo utilizar el programa si no se proporcionan argumentos

+1

¡Bienvenido a StackOverflow! Creo que el póster quiere saber cómo solucionarlo si args> 0, en realidad. –

0

Vi un par de otras soluciones, pero creo que no funcionarán si usted. Por ejemplo, proporcione C:\Program Files\file.dat como argumento de línea de comandos. Entonces no funcionará, ya que solo toma args[0] al crear un nuevo archivo.

Así que en realidad se debe hacer algo como lo siguiente, unirse a todas las partes del argumento dado y luego hacer un archivo de él:

import java.io.File; 

public class SomeProgram { 
    public static void main(String[] args) { 
     String current = ""; 
     File lastFile = null; 
     for(String str : args){ 
      File newFile = new File((current + " " + str).trim()); 
      if(newFile.exists()){ 
       lastFile = newFile; 
      } 
     current += " " + str; 
     } 
     File yourFile = lastFile; 
    } 
} 

Actualmente estoy trabajando en un problema similar y esto parece hacer el truco.

+0

Esta es una buena solución si el argumento (s) que se pasa al programa es una ruta de archivo que contiene espacios. Sin embargo, este no es un buen enfoque si más que solo una ruta de archivo se está pasando al programa. El enfoque adecuado es rodear la ruta del archivo con comillas antes de enviarlo al programa. El programa debería verificar que cada argumento sea del tipo correcto, y si no muestra el caso de uso correcto y salir. –

Cuestiones relacionadas