Прекратить расширение символов подстановки в аргументах командной строки для Java
Моя программа должна искать файлы, которые соответствуют маске. Имя папки и маска передаются через аргументы командной строки. Но маска заменяется первым совпадением, прежде чем я смогу ее использовать!
Двойные кавычки не действуют и другие символы тоже. Я пытался с помощью\
или же'
защитить вход. Однако тогда этот символ будет добавлен к аргументам, которые я не хочу. Есть идеи как это исправить?
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);
}
Регулярное выражение отargs[2]
также заменен некоторым файлом из папки.
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 \'.???'\ ...
Я понимаю, что использование цитаты или обратной косой черты не такая уж плохая идея, но я думаю, что существует лучший способ.