es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Creando un escáner que permite al usuario agregar un archivo CSV en Java.

Estoy tratando de crear un servicio que analice cada línea de un archivo CSV y ejecute una variedad de booleanos para la cadena en cada línea. Todo está funcionando correctamente, pero la forma en que lo tengo configurado es que el usuario copia el texto del archivo CSV y lo pega en el escáner. Quiero hacer que el usuario pueda agregar un archivo CSV mientras el código se está ejecutando.

La forma en que lo tengo configurado ahora mismo:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner exampleString = new Scanner(System.in);
do {
String checkString = exampleString.nextLine();
boolean testOne = checkString.contains(“Texto de la línea CSV”);
if(testOne){
String removingExtraCharacters = checkString.replaceAll
(” [^\d.$]”, “”);
System.out.println(removingExtraCharacters);
}
}while (exampleString.hasNextLine());
exampleString.close();
}

}

Investigué cómo usar el método Scanner(File()) pero solo pude encontrar cómo colocar el archivo en él antes de ejecutar el código. ¿Hay alguna forma de hacer que solicite al usuario que agregue el archivo al escáner después de que se ejecute el código?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de hacer que el programa solicite al usuario agregar el archivo al Scanner después de ejecutar el código. Una forma de lograr esto es utilizando argumentos de línea de comandos. En lugar de usar Scanner(System.in), puedes usar Scanner(new File(args[0])) para leer el archivo CSV que el usuario especifique como argumento de línea de comandos al ejecutar el programa.

    Aquí tienes una versión actualizada de tu código que utiliza argumentos de línea de comandos:

    import java.util.Scanner;
    import java.io.File;
    
    public class Main {
    
      public static void main(String[] args) {
        if (args.length == 0) {
          System.out.println("Por favor, especifica un archivo CSV como argumento de línea de comandos.");
          return;
        }
    
        Scanner exampleString;
        try {
          exampleString = new Scanner(new File(args[0]));
        } catch (Exception e) {
          System.out.println("Error al leer el archivo CSV: " + e.getMessage());
          return;
        }
    
        while (exampleString.hasNextLine()) {
          String checkString = exampleString.nextLine();
          boolean testOne = checkString.contains("Texto de la línea del CSV");
          if (testOne) {
            String removingExtraCharacters = checkString.replaceAll("[^\\d.$]", "");
            System.out.println(removingExtraCharacters);
          }
        }
    
        exampleString.close();
      }
    }
    

    Con este código, el usuario puede ejecutar el programa con el comando java Main /ruta/al/archivo/csv.csv, y el programa leerá el archivo CSV especificado por el usuario. Si el usuario no especifica un archivo CSV, el programa imprimirá un mensaje de error y finalizará. Si hay un problema al leer el archivo CSV, el programa imprimirá un mensaje de error y finalizará también.

    Ten en cuenta que esta es solo una forma de lograr la funcionalidad deseada, y también se pueden tomar otros enfoques según los requisitos del proyecto.

Comments are closed.