Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows tarafından desteklenen dosya sistemleri, diskte veya cihazda depolanan verilere erişmek için dosya ve dizin kavramını kullanır. Dosya ve cihaz G/Ç için Windows API'leriyle çalışan Windows geliştiricileri, dosya ve dizinler için adların kurallarını, kurallarını ve sınırlamalarını anlamalıdır.
Verilere disklerden, cihazlardan ve ağ paylaşımlarından dosya G/Ç API'leri kullanılarak erişilebilir. Ad alanlarıyla birlikte dosyalar ve dizinler, diskten, cihazdan veya belirli bir işlem için ağ bağlantısından bağımsız olarak verilerin alınacağı yerin dize gösterimi olan yol kavramının bir parçasıdır.
NTFS gibi bazı dosya sistemleri, aynı normal bir dosya veya dizinde olduğu gibi dosya adlandırma kurallarını ve kurallarını da izleyen bağlantılı dosyaları ve dizinleri destekler. Ek bilgi için bkz. Sabit Bağlantılar ve Birleşimler ve Tekrar Ayrıştırma Noktaları ve Dosya İşlemleri.
Windows'u uzun dosya yollarını destekleyecek şekilde yapılandırma hakkında bilgi edinmek için bkz. En Fazla Yol Uzunluğu Sınırlaması.
Dosya ve Dizin Adları
Tüm dosya sistemleri, tek bir dosya için aynı genel adlandırma kurallarını izler: temel dosya adı ve noktayla ayrılmış isteğe bağlı bir uzantı. Ancak NTFS, CDFS, exFAT, UDFS, FAT ve FAT32 gibi her dosya sistemi, bir dizin veya dosyanın yolundaki tek tek bileşenlerin oluşumu hakkında belirli ve farklı kurallara sahip olabilir. Bir dizinin yalnızca dizin olarak tanımlayan özel bir özniteliğe sahip bir dosya olduğunu, ancak aksi takdirde normal bir dosyayla aynı adlandırma kurallarının tümünü izlemesi gerektiğini unutmayın. Dizin terimi yalnızca dosya sistemi açısından özel bir dosya türüne başvurduğundan, bazı başvuru malzemeleri hem dizin kavramlarını hem de veri dosyalarını kapsayacak şekilde genel terim dosyasını kullanır. Bu nedenle, aksi belirtilmediği sürece, bir dosya için adlandırma veya kullanım kuralları veya örnekleri de bir dizine uygulanmalıdır. Yol terimi bir veya daha fazla dizine, ters eğik çizgilere ve muhtemelen bir birim adına başvurur. Daha fazla bilgi için Yollar bölümüne bakın.
Karakter sayısı sınırlamaları da farklı olabilir ve kullanılan dosya sistemine ve yol adı ön ek biçimine bağlı olarak farklılık gösterebilir. Geriye dönük uyumluluk mekanizmalarının desteklenmesi daha da karmaşıktır. Örneğin, eski MS-DOS FAT dosya sistemi temel dosya adı için en fazla 8 karakter, uzantı için 3 karakter ve nokta ayırıcı dahil olmak üzere toplam 12 karakteri destekler. Bu genellikle 8.3 dosya adı olarak bilinir. Windows FAT ve NTFS dosya sistemleri, uzun dosya adı desteğine sahip olduklarından 8.3 dosya adları ile sınırlı değildir, ancak yine de uzun dosya adlarının 8.3 sürümünü destekler.
Adlandırma Kuralları
Aşağıdaki temel kurallar, uygulamaların dosya sisteminden bağımsız olarak dosyalar ve dizinler için geçerli adlar oluşturmasını ve işlemesini sağlar:
Temel dosya adını uzantısından ayırmak için, bir dizin veya dosya adında nokta kullanın.
Yolunbileşenlerini ayırmak için ters eğik çizgi (\) kullanın. Ters eğik çizgi, dosya adını kendi yolundan ve bir dizin adını bir yoldaki başka bir dizin adından ayırır. Gerçek dosya veya dizin adında ters taksim kullanamazsınız, çünkü bu, adları bileşenlere ayırmak için kullanılan ayrılmış bir karakterdir.
Birim adlarının bir parçası olarak gerektiği gibi ters eğik çizgi kullanın; örneğin, "C:\path\file" içindeki "C:\" veya Evrensel Adlandırma Kuralı (UNC) adları için "\\server\share\path\file" içinde "\\server\share". UNC adları hakkında daha fazla bilgi için En Fazla Yol Uzunluğu Sınırlaması bölümüne bakın.
Büyük/küçük harf duyarlılığı varsaymayın. Örneğin, bazı dosya sistemleri (POSIX uyumlu bir dosya sistemi gibi) bunları farklı olarak düşünebilse bile, OSCAR, Oscar ve Oscar adlarının aynı olduğunu düşünün. NTFS'nin büyük/küçük harf duyarlılığı için POSIX semantiğini desteklediğini ancak bunun varsayılan davranış olmadığını unutmayın. Daha fazla bilgi için bkz. CreateFile.
Birim belirleyicileri (sürücü harfleri) benzer şekilde büyük/küçük harfe duyarlı değildir. Örneğin, "D:\" ve "d:\" aynı birime atıfta bulunurlar.
Bir ad için geçerli kod sayfasındaki unicode karakterler ve genişletilmiş karakter kümesindeki karakterler (128–255) dahil olmak üzere, aşağıdakiler dışında herhangi bir karakteri kullanın:
Aşağıdaki ayrılmış karakterler:
- <'dan küçük
- > (>)
- : (iki nokta üst üste)
- " (double quote)
- / (eğik çizgi)
- \ (ters eğik çizgi)
- | (dikey çubuk veya boru)
- ? (soru işareti)
- * (yıldız işareti)
Sıfır tamsayı değeri, bazen ASCII NUL karakteri olarak adlandırılır.
Bu karakterlere izin verilen alternatif veri akışları dışında, tamsayı gösterimleri 1 ile 31 arasında olan karakterler. Dosya akışları hakkında daha fazla bilgi için bkz. Dosya Akışları.
Hedef dosya sisteminin izin vermediği başka bir karakter.
Geçerli dizini temsil etmek için bir yoldaki dizin bileşeni olarak nokta kullanın, örneğin ".\temp.txt". Daha fazla bilgi için bkz. Yollar.
Geçerli dizinin üst öğesini temsil etmek için bir yolda dizin bileşeni olarak iki ardışık nokta (..) kullanın, örneğin"..\temp.txt". Daha fazla bilgi için bkz. Yollar.
Dosyanın adı için aşağıdaki ayrılmış adları kullanmayın:
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, COM¹, COM², COM³, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9, LPT¹, LPT² ve LPT³. Ayrıca bu adlardan hemen sonra bir uzantının izlenmesinden kaçının; örneğin, NUL.txt ve NUL.tar.gz nul ile eşdeğerdir. Daha fazla bilgi için bkz. Ad Alanları.
Uyarı
Windows, 8 bit ISO/IEC 8859-1 üst simge basamaklarını ¹, ² ve ³ basamak olarak tanır ve bunları COM# ve LPT# cihaz adlarının geçerli parçaları olarak kabul ederek her dizinde ayrılmış hale getirir. Örneğin,
echo test > COM¹bir dosya oluşturmayı başaramıyor.Bir dosya veya dizin adını boşluk veya noktayla sonlandırmayın. Dosya sistemi bu tür adları desteklese de, Windows kabuğu ve kullanıcı arabirimi bu adları desteklemez. Ancak, adın ilk karakteri olarak nokta belirtmek kabul edilebilir. Örneğin, ".temp".
Kısa ve Uzun Adlar karşılaştırması
Uzun dosya adı, kısa MS-DOS ( 8.3 olarak da adlandırılır) stil adlandırma kuralını aşan herhangi bir dosya adı olarak kabul edilir. Uzun bir dosya adı oluşturduğunuzda, Windows adın 8.3 diğer adı veya kısa adı olarak adlandırılan kısa bir 8.3 biçimini de oluşturabilir ve bunu diskte de depolar. Bu 8.3 takma adı, belirli bir dosya sistemine bağlı olarak, sistem genelinde veya belirli bir birimde performansı artırmak için devre dışı bırakılabilir.
Windows Server 2008, Windows Vista, Windows Server 2003 ve Windows XP: 8.3 takma ad, Windows 7 ve Windows Server 2008 R2'ye kadar belirtilen birimler için devre dışı bırakılamaz.
Birçok dosya sisteminde, bir dosya adı, adın her bileşeninde 8.3 adlandırma kurallarına uymayacak kadar uzun olan bir tilde (~) içerir.
Uyarı
Tüm dosya sistemleri tilde değiştirme kuralına uymaz ve sistemler normalde destekleseler bile 8.3 diğer ad oluşturmayı devre dışı bırakmak için yapılandırılabilir. Bu nedenle, 8.3 diğer adının diskte zaten var olduğu varsayımını kullanmayın.
Sistemden 8.3 dosya adlarını, uzun dosya adlarını veya dosyanın tam yolunu istemek için aşağıdaki seçenekleri göz önünde bulundurun:
- Uzun bir dosya adının 8.3 biçimini almak için GetShortPathName işlevini kullanın.
- Kısa adın uzun dosya adı sürümünü almak için GetLongPathName işlevini kullanın.
- Dosyanın tam yolunu almak için GetFullPathName işlevini kullanın.
NTFS, exFAT, UDFS ve FAT32 gibi daha yeni dosya sistemlerinde Windows, uzun dosya adlarını Unicode olarak diskte depolar; bu da özgün uzun dosya adının her zaman korunduğu anlamına gelir. Uzun bir dosya adı, disk okuma veya yazma işlemi sırasında etkin olan kod sayfasından bağımsız olarak genişletilmiş karakterler içerse bile bu durum geçerlidir.
Uzun dosya adları kullanan dosyalar, herhangi bir dosya adı bilgisi kaybolmadan NTFS dosya sistemi bölümleri ile Windows FAT dosya sistemi bölümleri arasında kopyalanabilir. Bu, gerçek dosya adına bağlı olarak eski MS-DOS FAT ve bazı CDFS (CD-ROM) dosya sistemleri için geçerli olmayabilir. Bu durumda, mümkünse kısa dosya adı kullanılır.
Yollar
Belirtilen dosyanın yolu , özel karakterle (ters eğik çizgi) ayrılmış bir veya daha fazla bileşenden oluşur ve her bileşen genellikle bir dizin adı veya dosya adı olur, ancak aşağıda açıklanan bazı önemli özel durumlar vardır. Genellikle sistemin yolun başlangıcının veya ön ekinin nasıl göründüğüne ilişkin yorumlanması açısından kritik önem taşır. Bu ön ek, yolun kullandığı ad alanını ve ayrıca son karakter de dahil olmak üzere yol içinde hangi konumda hangi özel karakterlerin kullanıldığını belirler.
Bir yolun bileşeni bir dosya adıysa, son bileşen olmalıdır.
Bir yolun her bileşeni de belirli bir dosya sistemi için belirtilen uzunluk üst sınırıyla kısıtlanır. Genel olarak, bu kurallar iki kategoriye ayrılır: kısa ve uzun. Dizin adlarının dosya sistemi tarafından özel bir dosya türü olarak depolandığını, ancak dosyalar için adlandırma kurallarının dizin adlarına da uygulandığını unutmayın. Özetlemek gerekirse, yol yalnızca belirli bir dosya veya dizin adı için var olan tüm dizinler arasındaki hiyerarşinin dize gösterimidir.
Tam Nitelenmiş ve Göreli Yollar Karşılaştırması
Dosyaları işleyen Windows API işlevleri için, dosya adları genellikle mevcut dizine göre göreceli olabilirken, bazı API'ler tam nitelikli bir yol gerektirir. Dosya adı, aşağıdakilerden biriyle başlamıyorsa geçerli dizine göredir:
- Her zaman iki ters eğik çizgi karakteriyle ("\\") başlayan herhangi bir biçimin UNC adı. Daha fazla bilgi için sonraki bölüme bakın.
- Ters eğik çizgili bir disk belirleyicisi, örneğin "C:\" veya "d:\".
- Tek bir ters eğik çizgi, örneğin, "\directory" veya "\file.txt". Bu, mutlak yol olarak da adlandırılır.
Bir dosya adı yalnızca bir disk belirleyicisiyle başlıyorsa ama iki nokta üst üste işaretinden sonra ters eğik çizgi içermiyorsa, belirtilen harfle sürücüdeki geçerli dizine göreli bir yol olarak yorumlanır. Geçerli dizinin, diskte en son "dizini değiştir" işlemi sırasında ne olarak ayarlandıklarına bağlı olarak kök dizin olup olmadığını unutmayın. Bu biçimin örnekleri şunlardır:
- "C:tmp.txt", C sürücüsündeki geçerli dizinde "tmp.txt" adlı bir dosyaya başvurur.
- "C:tempdir\tmp.txt", C sürücüsündeki geçerli dizinin alt dizinindeki bir dosyayı ifade eder.
"Çift nokta" içeren bir yolun göreli olduğu da söylenir; diğer bir ifadeyle, yolun bir bileşeninde iki nokta birlikte. Bu özel tanımlayıcı, mevcut dizinin üstündeki dizini belirtmek için kullanılır; aksi takdirde "üst dizin" olarak bilinir. Bu biçimin örnekleri şunlardır:
- "..\tmp.txt", geçerli dizinin üst öğesinde bulunan tmp.txt adlı bir dosyayı belirtir.
- "..\..\tmp.txt", geçerli dizinin üzerinde iki dizin olan bir dosyayı belirtir.
- "..\tempdir\tmp.txt", geçerli dizinle eş dizin olan tempdir adlı dizinde bulunan tmp.txt adlı bir dosyayı belirtir.
Göreli yollar her iki örnek türü birleştirebilir, örneğin"C:..\tmp.txt". Sistem, geçerli sürücüyü o sürücünün geçerli diziniyle birlikte takip etse de, hangi sürücü belirleyicisinin geçerli sürücü olarak ayarlandığından bağımsız olarak farklı sürücü harflerinden her birinde (sisteminizde birden fazla sürücü varsa) geçerli dizinleri de izlemesi nedeniyle kullanışlıdır.
En Fazla Yol Uzunluğu Sınırlaması
Windows 10 sürüm 1607'den önceki Windows sürümlerinde, bir yolun maksimum uzunluğu 260 karakter olarak tanımlanan MAX_PATH'dir. Windows'un sonraki sürümlerinde, sınırı kaldırmak için bir kayıt defteri anahtarını değiştirmek veya Grup İlkesi aracını kullanmak gerekir. Tüm ayrıntılar için bkz. En Fazla Yol Uzunluğu Sınırlaması .
Namespace'ler
Windows API'lerinde kullanılan ve genellikle NT ad alanları ve Win32 ad alanları olarak adlandırılan iki ana ad alanı kuralı kategorisi vardır. NT ad alanı, diğer alt sistemlerin ve ad alanlarının, özellikle Win32 alt sistemi ve dolayısıyla Win32 ad alanlarının var olabileceği en düşük düzeyde ad alanı olarak tasarlanmıştır. POSIX, Windows'ta NT ad alanının üzerinde oluşturulmuş bir alt sistemin başka bir örneğidir. Windows'un erken sürümleri, iletişim (seri ve paralel) bağlantı noktaları ve varsayılan görüntüleme konsolu gibi bazı özel cihazlar için önceden tanımlanmış veya ayrılmış birkaç ad tanımladı ve artık NT cihaz ad alanı olarak adlandırılan bir şeyin parçası olarak, geriye dönük uyumluluk için Windows'un geçerli sürümlerinde hala destekleniyor.
Win32 Dosya Ad Alanları
Win32 ad alanı önekleme ve kuralları bu bölümde ve bir sonraki bölümde, bunların nasıl kullanıldığına dair açıklamalarla özetlenir. Bu örneklerin Windows API işlevleriyle kullanılmak üzere tasarlandığını ve tümünün Windows Gezgini gibi Windows kabuk uygulamalarıyla çalışması gerekmediğini unutmayın. Bu nedenle, genellikle Windows kabuk uygulamalarında sağlanandan daha geniş bir olası yol yelpazesi vardır ve bundan yararlanan Windows uygulamaları bu ad alanı kuralları kullanılarak geliştirilebilir.
Dosya G/Ç için, yol dizesinin "\\?\" ön eki Windows API'lerine tüm dize ayrıştırma özelliğini devre dışı bırakmalarını ve onu izleyen dizeyi doğrudan dosya sistemine göndermelerini söyler. Örneğin, dosya sistemi uzun dizin yollarını ve dosya adlarını destekliyorsa, Windows API'leri tarafından uygulanan MAX_PATH sınırlarını aşabilirsiniz.
Yol dizesinin otomatik genişlemesini kapattığı için, "\\?\" ön eki yol adlarında ".." ve "." kullanılmasına da izin verir. Bu, tam yolun bir parçası olarak bu ayrılmış göreli yol tanımlayıcılarıyla bir dosya üzerinde işlem gerçekleştirmeye çalıştığınızda yararlı olabilir.
Çoğu dosya G/Ç API'leri "\\?\" öğesini desteklemez; emin olmak için her API'nin başvuru konusuna bakmanız gerekir.
"\\?\" ön ekinin MAX_PATH aşmanıza izin verdiğinden emin olmak için Unicode API'lerinin kullanılması gerektiğini unutmayın.
Win32 Cihaz Ad Alanları
"\\.\" ön eki, Win32 dosya ad alanı yerine Win32 cihaz ad alanına erişir. API bu tür erişimi destekliyorsa, fiziksel disklere ve birimlere erişim, dosya sisteminden geçmeden doğrudan bu şekilde gerçekleştirilir. Diskler dışındaki birçok cihaza bu şekilde erişebilirsiniz (örneğin CreateFile ve DefineDosDevice işlevlerini kullanarak).
Örneğin, sistemin seri iletişim bağlantı noktası 1'i açmak istiyorsanız CreateFile işlevi çağrısında "COM1" kullanabilirsiniz. COM1–COM9, NT ad alanında ayrılmış adların bir parçası olduğundan bu işe yarar, ancak "\\.\" ön ekinin kullanılması bu cihaz adlarıyla da çalışır. Karşılaştırmak gerekirse, 100 bağlantı noktası seri genişletme kartı yüklüyse ve COM56'yı açmak istiyorsanız, COM56 için önceden tanımlanmış NT ad alanı olmadığından "COM56" kullanarak açamazsınız. "\\.\" önceden tanımlanmış bir diğer ad bulmaya çalışmadan doğrudan cihaz ad alanına gittiği için bunu "\\.\COM56" kullanarak açmanız gerekir.
Win32 cihaz ad alanını kullanmanın bir diğer örneği de CreateFile işlevini "\\.\PhysicalDriveX" (burada X geçerli bir tamsayı değeridir) veya "\\.\CdRomX" ile kullanmaktır. Bu, dosya sistemini atlayarak bu cihazlara doğrudan erişmenizi sağlar. Bu cihaz adları sistem tarafından bu cihazlar numaralandırıldığından ve bazı sürücüler de sistemde başka diğer adlar oluşturduğundan bu işe yarar. Örneğin, "C:\" adını uygulayan cihaz sürücüsünün dosya sistemi de olan kendi ad alanı vardır.
CreateFile işlevinin üzerinden geçen API'ler genellikle "\\.\" ön eki ile çalışır çünkü CreateFile, kullandığınız parametrelere bağlı olarak hem dosyaları hem de cihazları açmak için kullanılan işlevdir.
Windows API işlevleriyle çalışıyorsanız dosyalara değil yalnızca cihazlara erişmek için "\\.\" ön ekini kullanmanız gerekir.
Çoğu API "\\.\" öğesini desteklemez; yalnızca cihaz ad alanıyla çalışacak şekilde tasarlanmış olanlar bunu tanır. Emin olmak adına her API için her zaman başvuru konusunu kontrol edin.
NT Ad Alanları
NT ad alanı kuralının kullanılmasına izin veren API'ler de vardır, ancak Windows Nesne Yöneticisi çoğu durumda bunu gereksiz hale getirir. Göstermek için, Windows Sysinternals WinObj aracını kullanarak sistem nesne tarayıcısında Windows ad alanlarına göz atmak yararlıdır. Bu aracı çalıştırdığınızda, gördüğünüz şey kök veya "\" ile başlayan NT ad alanıdır. "Global??" adlı alt klasör, Win32 ad alanının bulunduğu yerdir. Adlandırılmış cihaz nesneleri, "Device" alt dizinindeki NT ad alanında bulunur. Burada, sisteminizde varsa ilk iki COM bağlantı noktasını temsil eden Serial0 ve Serial1 cihaz nesnelerini de bulabilirsiniz. Birimi temsil eden bir cihaz nesnesi, "HarddiskVolume1" gibi bir isim alabilir; ancak bu ismin sayısal soneki değişebilir. "Harddisk0" alt dizininin altındaki "DR0" adı, bir diski temsil eden cihaz nesnesine bir örnektir ve bu şekilde devam eder.
Bu cihaz nesnelerinin Windows uygulamaları tarafından erişilebilir olmasını sağlamak için, cihaz sürücüleri Win32 ad alanında ilgili cihaz nesnelerine sembolik bir bağlantı (symlink) oluşturur. Örneğin, "Global??" alt dizinindeki COM0 ve COM1 yalnızca Serial0 ve Serial1'e sembolik bağlantılardır, "C:" HarddiskVolume1'e bir sembolik bağlantıdır, "Physicaldrive0", DR0'a bir sembolik bağlantıdır vb. Bir symlink olmadan, belirtilen bir cihaz "Xxx" daha önce açıklandığı gibi Win32 ad alanı kurallarını kullanan herhangi bir Windows uygulaması tarafından kullanılamaz. Ancak, "\Device\Xxx" biçiminde NT ad alanı mutlak yolunu destekleyen API'ler kullanılarak bu cihaza bir tanıtıcı açılabilir.
Terminal Hizmetleri ve sanal makineler aracılığıyla çok kullanıcılı desteğin eklenmesiyle, Win32 ad alanı içinde sistem genelindeki kök cihazın sanallaştırılması daha da gerekli hale gelmiştir. Bu, daha önce tartışılan WinObj tarayıcı aracının "Global??" alt dizininde görebileceğiniz ve "\\?\GLOBALROOT" yoluyla erişebileceğiniz Win32 ad alanına "GLOBALROOT" adlı symlink eklenerek gerçekleştirilir. Bu ön ek, izleyen yolun, oturuma bağımlı olmayan bir yol yerine, sistem nesne yöneticisinin gerçek kök yolunu kullanmasını sağlar.