Sobes.tech
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();
             }
         }
    }
}