Java.io.file не может распознать символ "~" домашнего каталога?

Я пробовал это на Mac:

touch ~/a.txt

А затем файл java:

import java.io.File;

public class testPwd {
    public static void main(String [] args) {
        File f = new File("~/a.txt");
        System.out.println(f.exists());
    }
}

Он выводит «ложь».

Почему это? Распознает ли Java символ "~"? Если я использую абсолютный путь, f.exists () вернет true.

Какие-нибудь объяснения?

Does java recognize the "~" symbol? - Как вы продемонстрировали, это не так. Что еще вы спрашиваете?
khelwood 31.10.2018 14:23

Это соглашение Unix; не уверен, что он независим от платформы.

duffymo 31.10.2018 14:26

Да, ты не можешь этого сделать. Используйте System.getProperty("user.home");, как показано в этом вопросе stackoverflow.com/questions/585534/…, чтобы получить домашний каталог пользователя.

Frzn Flms 31.10.2018 14:26
1
3
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Why is this?

Потому что символ ~ понимается только оболочкой Unix (и, что сбивает с толку, он использовался в HTTP-серверах). Даже если вы написали программу на C, она не поймет, что ~ обозначает домашний каталог текущего пользователя.

Чтобы получить домашний каталог пользователя, используйте System.getProperty("user.home"). (Ответ от Как лучше всего найти домашний каталог пользователей на Java?)

Другие вопросы по теме