Deje de expandir símbolos comodín en argumentos de línea de comandos a Java
Mi programa tiene que buscar archivos que coincidan con una máscara. El nombre de la carpeta y la máscara se pasan a través de argumentos de línea de comando. ¡Pero la máscara se reemplaza por el primer partido antes de que pueda usarla!
Las comillas dobles no tienen efecto y otros símbolos también. Traté de usar\
o'
para proteger la entrada. Sin embargo, este símbolo se agregará a los argumentos, que no quiero. ¿Alguna idea de cómo solucionarlo?
public static void main(String[] args) throws IOException {
File dir = new File(args[0]);
String mask = args[1];
System.out.println(dir.getAbsolutePath());
System.out.println(mask);
String regex = args[2];
System.out.println(regex);
}
Expresión regular deargs[2]
También reemplazado con algún archivo de la carpeta.
Input: "E:\Programming\Java\Task7" *.??? ...
Ouput: E:\Programming\Java\Task7 .git Task7.iml
Input: "E:\Programming\Java\Task7" *.????* [a-zA-Z]
Output: E:\Programming\Java\Task7 .idea [a-zA-Z]
Input: "E:\Programming\Java\Task7" '.???' ...
Output: E:\Programming\Java\Task7 '.???' ...
Input: "E:\Programming\Java\Task7" \\'.???'\\ ...
Output: E:\Programming\Java\Task7 \'.???'\ ...
Entiendo que usar comillas o barras invertidas no es una mala idea, pero creo que existe una mejor manera.