Как узнать путь к java
Перейти к содержимому

Как узнать путь к java

  • автор:

Java: проверить валидность пути к файлу

Дано: на вход метода приходит файл и путь, куда этот файл локально сохранить. Путь вида /opt/docstorage/foo/bar (или, если на винде, то C:\docstorage\foo\bar ). Если промежуточных каталогов не существует, то они рекурсивно создаются через File.mkdirs() . Права на запись в docstorage есть, всё нормально сохраняется, проблем никаких. Проблемы начинаются, если на вход приходит кривой путь (типа docstorage/foo/bar ) — такого каталога нет, но Java воспринимает эту строку как путь относительно Class Path, превращая в абсолютный путь вида C:\Users\username\AppData\Roaming\NetBeans\8.2\config\GF_4.1.1\domain1\config\docstorage\foo\bar (на винде). Это не соответствует моим ожиданиям. Надо либо сохранять файл ровно туда, куда сказано, либо кидать ошибку, что путь кривой. Вопрос: как это проконтролировать в коде? Paths.get() никаких проблем в такой ссылке не видит и спокойно её пропускает. Понятно, что можно просто в лоб проверять, начинается ли путь со слэша или с буква-двоеточие-слэш (в зависимости от текущей операционки), но, может, есть менее кустарные способы валидации?

Отслеживать
906 6 6 серебряных знаков 12 12 бронзовых знаков
задан 5 авг 2020 в 13:40
Aarne Avialaynen Aarne Avialaynen
53 7 7 бронзовых знаков

То что вы хотите называется абсолютным путем. На сколько я помню у Path есть метод проверки, что он абсолютный.

5 авг 2020 в 14:06
Точно, path.isAbsolute() работает! То, что нужно, спасибо!
5 авг 2020 в 14:15

на всякий случай: если строка приходит не из доверенного источника (например с клиента на сервер), то ее лучше вообще не использовать для пути к файлу. А взять, например, хэш.

5 авг 2020 в 19:59

Строка приходит из БД, но базист позарез хочет, чтобы я его контролировал, «потому что мало ли что я там у себя в таблице случайно не так поправлю». Тащемта, он прав в том, что кривой путь не должен приводить к сохранению файла в кишках джавы, а должен выбрасывать ошибку.

Как получить путь к файлу java

getParent() — возвращает «родительскую» директорию по отношению к текущему пути (то есть ту директорию, которая находится выше по дереву каталогов).

File f = new File("c:\\users\\program.txt"); String Parent = f.getParent(); 

getRoot() — возвращает «корневую» директорию; то есть ту, которая находится на вершине дерева каталогов.

Как в Windows узнать полный путь к установленной JRE и JDK ?

Для того, чтобы в командной строке вызывалась команда, путь до нее нужно прописать в переменные окружения. В твоем случае это делается наведением мышки на значек «Мой компьютер», правой кнопкой мышки щелкаем и вызываем «Свойства», переходим в закладку «Дополнительно» и нажимаем на кнопку внизу с надписью «Переменные среды». Ищем переменную Path и переписываем ссылку с каталога с /bin на каталог с /bin
Также желательно установить переменную среды JAVA_HOME на каталог с JDK

Пример:
JAVA_HOME=C:\Program Files\Java\jdk1.5.0
Path=. ;C:\Program Files\Java\jdk1.5.0\bin

PS.
JRE — Java Runtime Edition — среда исполнения явы
JDK — Java Development Kit — инструментарий ява-разработчика, в который и входит компилятор javac

Как узнать путь к файлу java

Метод File.getAbsolutePath() предоставит Вам полный путь к файлу (filepath + filename) файла. Например:

File file = File("C:\abcfolder\textfile.txt"); System.out.println("Path: " + file.getAbsolutePath()); // => Path: C://abcfolder//textfile.txt 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *