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