Символическая ссылка(также известная как символическая ссылка или мягкая ссылка) — это специальный файл, который служит ссылкой на другой файл. В этом руководстве по Java мы научимся создавать, обнаруживать и находить цели символических ссылок, используя примеры.
Стоит отметить, что классы Java NIO(например, Path ) поддерживают ссылки. Его методы предоставляют настраиваемые параметры, позволяющие нам настраивать поведение при обнаружении символической ссылки вместо обычного файла.
Это также означает, что для большинства операций CRUD действия над символическими ссылками автоматически перенаправляются на цель ссылки.
1. Создание символических ссылок
Метод Files.createSymbolicLink(link, target) используется для создания символической ссылки файла. Он принимает два аргумента, а именно путь к исходному файлу и путь назначения, где будет создана символическая ссылка.
Обратите внимание, что если целью является относительный путь, то операции файловой системы по полученной ссылке выполняются относительно пути ссылки.
- Мы можем передать необязательные константы FileAttribute, чтобы настроить поведение созданной ссылки.
- Метод выдает исключение FileAlreadyExistsException, если файл с таким именем уже существует.
- Если базовая JVM не поддерживает символические ссылки, будет выдано исключение UnsupportedOperationException.
- В других случаях, если при создании ссылок возникнет ошибка, будет выдано исключение IOException.
- Мы также можем столкнуться с SecurityException или FileSystemException, если возникнут какие-либо проблемы с разрешением на запись.
Path regularFile = Paths.get("data.txt");Path link = Paths.get("data_link.txt");if(Files.exists(link)) {Files.delete(link);}Files.createSymbolicLink(link, regularFile);
2. Проверка символических ссылок
Чтобы проверить, является ли данный файл символической ссылкой, мы можем использовать метод Files.isSymbolicLink().
Метод isSymbolicLink() возвращает:
- true, если файл является символической ссылкой
- false, если файл не существует
- false не является символической ссылкой
- false, если невозможно определить, является ли файл символической ссылкой или нет
boolean isLink = Files.isSymbolicLink(link);
3. Поиск цели ссылки
Путь к целевому файлу символической ссылки можно найти с помощью метода readSymbolicLink(link).
Этот метод выдает исключение NotLinkException, если указанный путь не является символической ссылкой.
try {Path file = Files.readSymbolicLink(link);} catch(IOException x) {System.err.println(x);}
4. Заключение
В этом уроке мы изучили API Java NIO, которые поддерживают символические ссылки и некоторые операции над ними.
Помните, что символические ссылки зависят от множества других факторов, таких как поддержка ОС, поддержка базовой JVM, поддержка базовой FileStore и т. д. Если возникнут какие-либо проблемы с поддержкой или разрешениями на чтение и запись, будут выданы соответствующие исключения.