Избегать обратной косой черты от терминального входа - PullRequest
0 голосов
/ 21 июня 2019

Моя программа принимает аргументы из терминала, причем последний аргумент является путем к CSV-файлу.Моя проблема в том, что обратные слеши всегда удаляются к тому времени, когда они попадают в мой основной класс.

Как я могу позволить пользователю вводить путь к файлу типа Windows и иметь обратную косую черту при вводе моего основного метода?

Я пытался увидеть, есть ли обратная косая черта в виде символа, подобноготак:

for (int num = 0; num < args[2].length(); num ++) {
            char c = args[2].charAt(num);
            if (c == '\\') {
                System.out.println("backslash found");
            }
        }

но его просто нет.

Я тоже попробовал так:

System.out.println(args[2].replace("\\", "\\\\"));

первая попытка не распечатать обратную косую черту найдена, а втораяпопробуйте просто напечатать путь, исключая обратную косую черту.

1 Ответ

0 голосов
/ 21 июня 2019

Обратные слеши, скорее всего, уже удаляются командной оболочкой, поскольку они также используют ее как escape-символ.Проверьте переданное значение, скорее всего, значение после обратной косой черты также отсутствует.

Вы должны экранировать обратную косую черту при вызове программы, например, так:

java -cp myjar com.example.MyApp "param 1" "param 2" "path\\to\\example\\file.txt"

В качестве альтернативы passпуть с косыми чертами.Java поддерживает их и в Windows-системах.

...