Ниже приведена строка, которая создает путь к каталогу в java.
Здесь File.separator
"\" на окнах и "/" в Unix.
String path = System.getProperty("user.home") + File.separator + "workspace" +
File.separator + "JavaCode";
Если я жестко задал путь, он должен выглядеть так, как показано ниже:
File path = new File("C:\\users\\david\\workspace\\JavaCode");
Мой вопрос:
Почему мы упомянем \\
во втором случае?
Потому что, с строкой, \
является escape-символом: он говорит, что особым образом интерпретирует следующий символ (поэтому \n
не является n
). В вашем случае вы хотите, чтобы \
себя интерпретировали специально, не рассматривая его специально, поэтому вам нужно 2 из них: первый говорит "относиться к следующему символу особым", а следующий обрабатывается специально для a \
.
File.separator
мне не потребовалось две обратные File.separator
?
Это связано с тем, как строковые литералы определены в Java. Для некоторых управляющих последовательностей (например, "\n"
, "\r"
и других) используется обратная косая черта, поэтому буквальная обратная косая черта также является escape-последовательностью ("\\"
).
Вернемся к вашему коде, однако, не беспокойтесь, вместо этого используйте java.nio.file:
final Path path = Paths.get(System.getProperty("user.home"), "workspace",
"JavaCode");
Работает для каждой ОС JVM (7+).
Он корректно вернет Path
для "C:\\users\\david\\workspace\\JavaCode"
на вашем компьютере так же, как и для "/home/fge/workspace/JavaCode"
на моем компьютере.
File
переменнойpath
типаString
.