[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-i-o-nio-chto-takoe-simvolnaya-ssylka":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},682,"chto-takoe-simvolnaya-ssylka",15,"i-o-nio","I\u002FO & NIO","📁","Что такое символьная ссылка?","Символьная (символическая) ссылка (symlink) — это специальный файл в файловой системе, который содержит не пользовательские данные, а путь к другому файлу или каталогу.\n\n> Аналогия из жизни: символьная ссылка — это как ярлык на рабочем столе. Он указывает на программу, но сам программой не является. Если удалить ярлык, программа останется. Если удалить программу, ярлык станет «битым».\n\nПри обращении к символьной ссылке ОС автоматически перенаправляет операцию к целевому объекту. Целью ссылки может быть файл, каталог, другая ссылка или даже несуществующий объект (битая ссылка).\n\n### Отличие от жёстких ссылок\n\n| Характеристика | Символьная ссылка | Жёсткая ссылка |\n|---|---|---|\n| Содержит | Путь к файлу | Ссылку на inode |\n| Может ссылаться на каталог | Да | Нет (обычно) |\n| Работает между файловыми системами | Да | Нет |\n| При удалении цели | Становится битой | Данные остаются, пока есть хотя бы одна ссылка |\n\n### Работа в Java (NIO.2)\n\n```java\n\u002F\u002F Создание символьной ссылки\nPath target = Path.of(\"\u002Fhome\u002Fuser\u002Fdata.txt\");\nPath link = Path.of(\"\u002Fhome\u002Fuser\u002Flink_to_data.txt\");\nFiles.createSymbolicLink(link, target);\n\n\u002F\u002F Проверка, является ли путь символьной ссылкой\nboolean isSymlink = Files.isSymbolicLink(link); \u002F\u002F true\n\n\u002F\u002F Получение цели ссылки\nPath realTarget = Files.readSymbolicLink(link);\n\n\u002F\u002F Разрешение реального пути (с учётом символьных ссылок)\nPath realPath = link.toRealPath();\n```\n\nПо умолчанию методы `Files.walk()` и `Files.copy()` не следуют символьным ссылкам. Для следования используется опция `FileVisitOption.FOLLOW_LINKS` или `LinkOption.NOFOLLOW_LINKS` для явного игнорирования.\n\n> **На собеседовании:** дайте определение, объясните отличие от жёсткой ссылки и покажите, что NIO.2 полноценно поддерживает символьные ссылки через `Files.createSymbolicLink()`, `Files.isSymbolicLink()`, `Files.readSymbolicLink()`.","","junior",[15,16,17,18],"core","file","nio","io",[],null,{"title":22,"description":23,"ogTitle":22,"ogDescription":24,"keywords":25,"schemaAnswer":36,"featuredSnippetReady":37},"Символьная ссылка (symlink) в Java — Gymterview","Символьная ссылка: определение, отличие от жёсткой ссылки, работа в Java через NIO.2 (createSymbolicLink, isSymbolicLink, readSymbolicLink).","Что такое символьная ссылка, отличие от жёсткой, работа в Java через Files.createSymbolicLink() и NIO.2.",[26,27,28,29,30,31,32,33,34,35],"символьная ссылка","symlink","симлинк","жёсткая ссылка","createSymbolicLink","isSymbolicLink","readSymbolicLink","NIO.2","Java","собеседование","Символьная (символическая) ссылка — специальный файл, содержащий путь к другому файлу или каталогу. При обращении ОС перенаправляет к цели. Отличие от жёсткой ссылки: работает между FS, может ссылаться на каталоги, становится «битой» при удалении цели. В Java NIO.2: Files.createSymbolicLink(), Files.isSymbolicLink(), Files.readSymbolicLink().",true]