Sobes.tech
Junior

Simvolik keçid nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Simvolik bağlantı (və ya symlink) əməliyyat sistemində başqa bir fayl və ya qovluğa işarə edən xüsusi bir fayl növüdür. O, qısayol kimi işləyir.

Əsas xüsusiyyətlər:

  • Yolu ehtiva edir: Simvolik bağlantı, hədəf fayl və ya qovluğa olan yol olan mətn sətirini ehtiva edir. Bağlantıya daxil olduqda, sistem bu yolu izləyir.
  • Məlumat ehtiva etmir: Özündə hədəf faylın məlumatlarını ehtiva etmir. Ölçüsü adətən kiçikdir və yolun uzunluğundan asılıdır.
  • Bölmədən müstəqildir: Hədəf fayl və ya qovluq başqa bir bölmədə və ya hətta başqa bir fayl sistemində ola bilər, əlaqəli deyil.
  • Qırıq bağlantılar: Əgər hədəf fayl və ya qovluq silinərsə, simvolik bağlantı "qırıq" (broken) və ya "sallanmış" (dangling) olur, amma özündə əlaqə davam edir.
  • Dəstək: Əksər müasir əməliyyat sistemləri tərəfindən dəstəklənir (Linux, macOS, Windows NTFS ilə).

Qəti əlaqə ilə müqayisə:

Kriteriya Simvolik əlaqə Qəti əlaqə
Fayl növü Ayrı bir fayl növü inode-ya əlavə əlaqə
Yol Hədəfə olan yolu saxlayır Yolu saxlamır
Bölmə/Fayl sistemi Başqa bölməyə və ya fayl sisteminə işarə edə bilər Eyni bölmədə və ya fayl sistemində olmalıdır
Hədəf silinsə Əlaqə "qırıq" olur Məlumatlar digər əlaqələr vasitəsilə əldə edilə bilər
Qovluqlara qarşı Qovluqlara işarə edə bilər Adətən, qovluqlara işarə edə bilməz

Java-da simvolik əlaqələrlə işləmək üçün java.nio.file API-dən istifadə olunur.

// Simvolik əlaqə yaratma nümunəsi
import java.io.IOException;
import java.nio.file.*;

public class SymlinkExample {

    public static void main(String[] args) {
        Path target = Paths.get("target_file.txt"); // Hədəf fayl
        Path link = Paths.get("mylink_to_target"); // Simvolik əlaqənin adı

        try {
            // Hədəf faylını yaradın (nümunə üçün)
            Files.write(target, "Hello, World!".getBytes());

            // Simvolik əlaqə yaradın
            Files.createSymbolicLink(link, target);
            System.out.println("Simvolik əlaqə yaradıldı: " + link.toAbsolutePath());

            // Yolun simvolik əlaqə olub-olmadığını yoxlayın
            System.out.println(link.getFileName() + " simvolik əlaqəmi: " + Files.isSymbolicLink(link));

            // Bağlantı vasitəsilə məzmunu oxuyun
            byte[] content = Files.readAllBytes(link);
            System.out.println("Məzmun bağlantısı vasitəsilə: " + new String(content));

            // Bağlantını həll edin və hədəf fayla olan yolu alın
             Path resolvedTarget = Files.readSymbolicLink(link);
             System.out.println("Bağlantının hədəf yolu: " + resolvedTarget);

        } catch (IOException e) {
            e.printStackTrace();
         } finally {
             // Yaradılan faylları silin
             try {
                 Files.deleteIfExists(link);
                 Files.deleteIfExists(target);
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
    }
}