¿Cómo puedo recibir un archivo como un argumento de línea de comandos?Usando el argumento de línea de comandos para pasar archivos a un programa
Respuesta
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
}
}
}
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
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
¡Bienvenido a StackOverflow! Creo que el póster quiere saber cómo solucionarlo si args> 0, en realidad. –
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.
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. –
- 1. programa de línea de comandos para sangrar archivos PHP
- 2. Bash: Tome el primer argumento de la línea de comandos y pasar el resto
- 3. ¿Cómo puedo pasar más de un argumento de línea de comandos a través de C#
- 4. Pasando el argumento de la línea de comando al programa Python usando IDLE?
- 5. ¿Cómo puedo pasar argumentos de línea de comandos a un programa Perl?
- 6. ¿Cómo ejecuto un programa de línea de comandos en Delphi?
- 7. python argh/argparse: ¿Cómo puedo pasar una lista como un argumento de línea de comandos?
- 8. Cómo pasar argumentos desde la línea de comandos a gradle
- 9. argumento de línea de comandos GCC pickiness
- 10. Pasar un nombre de archivo como un argumento de línea de comando a la secuencia de comandos Octave de GNU
- 11. Argumentos de la línea de comandos de Java. Usando * como argumento para la multiplicación
- 12. Pasar una cadena de múltiples líneas como argumento para una secuencia de comandos en Windows
- 13. Cómo depurar un programa de línea de comandos C#
- 14. ¿Cómo pasar un carácter nulo en un argumento de línea de comando en C?
- 15. problema pasando 0 como argumento de línea de comandos
- 16. Secuencia de comandos para asociar una extensión a un programa
- 17. ¿Es posible pasar una matriz como un argumento de línea de comando a una secuencia de comandos PHP?
- 18. cómo pasar argumento de línea de comandos con espacio en scripts bash
- 19. Haciendo un programa de línea de comandos "pantalla completa"
- 20. cómo pasar el argumento variable a exe?
- 21. Argumento booleano para la secuencia de comandos
- 22. Ejecute NSRunLoop en un programa de línea de comandos Cocoa
- 23. VB.Net línea de comandos (consola) programa con parámetros para SharePoint
- 24. Cómo pasar la entrada de la línea de comandos al programa de prueba junit maven
- 25. archivo como argumento de la línea de comandos para argparse - mensaje de error si el argumento no es válido
- 26. Argumento de línea de comandos personalizado de Emacs
- 27. pasar argumentos de línea de comandos en C#
- 28. ¿Es posible ejecutar PhantomJS desde node.js como un argumento de línea de comandos?
- 29. ¿Puedes pasar un argumento a sigaction?
- 30. Línea de comando args en el programa C usando Netbeans
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
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. –
@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