Я пробовал это на 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.
Какие-нибудь объяснения?
Это соглашение Unix; не уверен, что он независим от платформы.
Да, ты не можешь этого сделать. Используйте System.getProperty("user.home");
, как показано в этом вопросе stackoverflow.com/questions/585534/…, чтобы получить домашний каталог пользователя.
Why is this?
Потому что символ ~
понимается только оболочкой Unix (и, что сбивает с толку, он использовался в HTTP-серверах). Даже если вы написали программу на C, она не поймет, что ~
обозначает домашний каталог текущего пользователя.
Чтобы получить домашний каталог пользователя, используйте System.getProperty("user.home")
. (Ответ от Как лучше всего найти домашний каталог пользователей на Java?)
Does java recognize the "~" symbol?
- Как вы продемонстрировали, это не так. Что еще вы спрашиваете?