Stoppen Sie das Erweitern von Platzhaltersymbolen in Befehlszeilenargumenten nach Java

Mein Programm muss nach Dateien suchen, die einer Maske entsprechen. Der Ordnername und die Maske werden über Befehlszeilenargumente übergeben. Aber die Maske wird durch das erste Match ersetzt, bevor ich sie verwenden kann!

Doppelte Anführungszeichen haben keine Wirkung und andere Symbole auch. Ich habe versucht mit\ oder', um den Eingang zu schützen. Dieses Symbol wird dann jedoch zu den Argumenten hinzugefügt, die ich nicht möchte. Irgendeine Idee, wie man es repariert?

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);
}

Regularer Ausdruck vonargs[2] wurde auch durch eine Datei aus einem Ordner ersetzt.

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 \'.???'\ ...

ch verstehe, dass die Verwendung von Anführungszeichen oder Backslash keine so schlechte Idee ist, aber ich denke, es gibt einen besseren We

Antworten auf die Frage(1)

Ihre Antwort auf die Frage