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
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Why is this?

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

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

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