Почему я не могу найти файл с нормализованным путем в системе Windows? - PullRequest
0 голосов
/ 29 октября 2018

Я хочу проверить, существует ли файл по его пути, используя java. Я знаю, что в классе Paths есть метод normalized (). Вот мой код:

File file = Paths.get(fileName).normalize().toFile();
        if (!file.exists()) {
            return "File does not exist.";
        }

Имя файла - это путь к файлу с системными символами текущего каталога, например "." Или ".." После нормализации пути он просто удаляет точки пути, и окна не могут найти новый путь без точек. Но приведенный выше код отлично работает на других системах. Интересно, почему и что мне делать, если я хочу проверить, существует ли путь с точками или нет?

1 Ответ

0 голосов
/ 29 октября 2018

Почему происходит переход от API путей к файловому API?

использование: Files.exists(Paths.get(fileName).normalize());

Как сказано в документации, normalize удаляет конструкции /./, а также конструкции X /../. Тем не менее, это может привести к несколько отличным файлам в случае странных конструкций программных ссылок, что, да, даже в Windows - это то, что вы можете сделать. Это может быть связано с этим. Дайте нам путь до и после нормализации (просто используйте его), и мы, возможно, расскажем вам немного подробнее об этом.

Обычно вы не хотите нормализоваться. В зависимости от ситуации вы либо просто хотите, чтобы путь был как есть, либо (в случае, если вам нужно сохранить его на потом, проверить его по определенным фильтрам или отобразить его пользователю), path.toAbsolutePath().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...