Junior
Simvolik bog'lanma nima?
sobes.tech AI
AIdan javob
Belgilovchi bog'langan (yoki symlink) operatsion tizimda boshqa fayl yoki katalogga ishora qiladigan maxsus fayl turi. U qisqa yo'l sifatida ishlaydi.
Asosiy xususiyatlar:
- Yo'lni o'z ichiga oladi: Belgilovchi bog'langan, maqsad fayl yoki katalogga yo'l bo'lgan matn satrini o'z ichiga oladi. Bog'langan yo'lga kirishda, tizim bu yo'lni bajaradi.
- Ma'lumotlarni o'z ichiga olmaydi: O'zi maqsad faylning ma'lumotlarini o'z ichiga olmaydi. Uning hajmi odatda kichik bo'lib, yo'l uzunligiga bog'liq.
- Bo'limdan mustaqil: Maqsad fayl yoki katalog boshqa bo'limda yoki hatto boshqa fayl tizimida bo'lishi mumkin, bog'langan joydan farqli.
- Yarim bog'langanlar: Agar maqsad fayl yoki katalog o'chirilsa, belgilovchi bog'langan "uzilgan" (broken) yoki "osilib qolgan" (dangling) bo'lib qoladi, lekin o'zi mavjud bo'lib qoladi.
- Qo'llab-quvvatlash: Ko'p zamonaviy operatsion tizimlar tomonidan qo'llab-quvvatlanadi (Linux, macOS, Windows NTFS bilan).
Qattiq bog'langan bilan taqqoslash:
| Mezon | Belgilovchi bog'langan | Qattiq bog'langan |
|---|---|---|
| Fayl turi | Alohida fayl turi | inode'ga qo'shimcha bog'lanish |
| Yo'l | Maqsadga yo'lni saqlaydi | Yo'lni saqlamaydi |
| Bo'lim/Fayl tizimi | Boshqa bo'lim yoki fayl tizimiga ishora qilishi mumkin | Bir xil bo'limda yoki fayl tizimida bo'lishi kerak |
| Maqsad o'chirilganda | Bog'langan "uzilgan" bo'ladi | Boshqa bog'lanishlar orqali ma'lumotlar kirish mumkin |
| Kataloglar uchun | Kataloglarga ishora qilishi mumkin | Odatda kataloglarga ishora qilmaydi |
Java'da belgilovchi bog'langan bilan ishlash java.nio.file API'si orqali amalga oshiriladi.
// Belgilovchi bog'langan yaratish misoli
import java.io.IOException;
import java.nio.file.*;
public class SymlinkExample {
public static void main(String[] args) {
Path target = Paths.get("target_file.txt"); // Maqsad fayl
Path link = Paths.get("mylink_to_target"); // Belgilovchi bog'langan nomi
try {
// Maqsad faylini yaratish (misol uchun)
Files.write(target, "Hello, World!".getBytes());
// Belgilovchi bog'langan yaratish
Files.createSymbolicLink(link, target);
System.out.println("Belgiyovchi bog'langan yaratildi: " + link.toAbsolutePath());
// Yo'l belgilovchi bog'langan yoki yo'qligini tekshirish
System.out.println(link.getFileName() + " belgilovchi bog'langanmi: " + Files.isSymbolicLink(link));
// Bog'langan orqali mazmunni o'qish
byte[] content = Files.readAllBytes(link);
System.out.println("Bog'langan orqali mazmun: " + new String(content));
// Bog'langanni yechib, maqsad faylning yo'lini olish
Path resolvedTarget = Files.readSymbolicLink(link);
System.out.println("Bog'langan maqsad yo'li: " + resolvedTarget);
} catch (IOException e) {
e.printStackTrace();
} finally {
// Yaratilgan fayllarni o'chirish
try {
Files.deleteIfExists(link);
Files.deleteIfExists(target);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}