Aracılığıyla paylaş


filesystem

Yollar, dosyalar ve dizinler hakkındaki bilgileri işleyen ve alan sınıflara ve işlevlere erişim için üst bilgiyi <filesystem> ekleyin.

Sözdizimi

#include <filesystem> // C++17 standard header file name
#include <experimental/filesystem> // Header file for pre-standard implementation
using namespace std::experimental::filesystem::v1;

Önemli

Visual Studio 2017 <filesystem> sürümünde üst bilgi henüz bir C++ standardı değildi. Visual Studio 2017 RTW'deki C++, ISO/IEC JTC 1/SC 22/WG 21 N4100'de bulunan son taslak standardını uygular. Visual Studio 2017 sürüm 15.7 ve üzeri yeni C++17 <filesystem> standardını destekler. Bu, önceki std::experimental sürümle uyumlu olmayan tamamen yeni bir uygulamadır. Symlink desteği, hata düzeltmeleri ve standart olarak gerekli davranış değişiklikleriyle gerekli hale getirildi. Visual Studio 2019 sürüm 16.3 ve sonraki sürümlerinde, <filesystem> yalnızca yeni std::filesystemsağlar. Dahil, <experimental/filesystem> yalnızca eski experimental uygulamayı sağlar. Uygulama, experimental kitaplıkların bir sonraki ABI hataya neden olan sürümünde kaldırılacaktır.

Bu üst bilgi, iki geniş konak işletim sistemi sınıfından biri için dosya sistemlerini destekler: Microsoft Windows ve POSIX.

İşlevlerin çoğu her iki işletim sistemi için de ortak olsa da, bu belgede farkların nerede oluştuğu belirlenir. Örneğin:

  • Windows, veya \\network_namegibi c: birden çok kök adı destekler. Dosya sistemi, göreli yol adını (mutlak yol adı olmayan) tamamlamak için her biri veya \\network_name\gibi c:\ kendi kök dizinine sahip ve her biri kendi geçerli dizinine sahip ağaçlardan oluşan bir ormandan oluşur.

  • POSIX, kök adı olmayan tek bir ağacı, tek bir kök dizini /ve tek bir geçerli dizini destekler.

Bir diğer önemli fark da yol adlarının yerel gösterimidir:

  • Windows, UTF-16 (her karakter için bir veya daha fazla öğe) olarak kodlanmış null olarak sonlandırılan dizisi wchar_tkullanır.

  • POSIX, UTF-8 (her karakter için bir veya daha fazla öğe) olarak kodlanmış null olarak sonlandırılan dizisi charkullanır.

  • sınıfının path bir nesnesi pathname dosyasını yerel biçimde depolar, ancak bu depolanmış form ile birkaç dış form arasında kolay dönüştürmeyi destekler:

    • İşletim sistemi tarafından tercih edilen şekilde kodlanmış, null olarak sonlandırılan dizisi char.

    • UTF-8 olarak kodlanmış, null olarak sonlandırılan dizisi char.

    • İşletim sistemi tarafından tercih edilen şekilde kodlanmış, null olarak sonlandırılan dizisi wchar_t.

    • UTF-16 olarak kodlanmış, null olarak sonlandırılan dizisi char16_t.

    • UTF-32 olarak kodlanmış, null olarak sonlandırılan dizisi char32_t.

    Bu gösterimler arasındaki karşılıklı dönüştürmeler, bir veya daha fazla codecvt model kullanılmasıyla gerektiği gibi aracılık edilir. Belirli bir yerel ayar nesnesi belirtilmezse, bu modeller genel yerel ayardan alınır.

Diğer bir fark, her işletim sisteminin dosya veya dizin erişim izinlerini belirtmenize olanak tanıyan ayrıntıdır:

  • Windows, bir dosyanın salt okunur mu yoksa yazılabilir mi olduğunu, dizinler için anlamı olmayan bir özniteliği kaydeder.

  • POSIX, bir dosyanın okunup okunamayacağını, yazılabildiğini veya yürütülebileceğini (bir dizin varsa taranabilir) kaydeder. Ayrıca, her işleme sahip, sahibin grubu veya herkes için izin verilip verilmeyeceği ile birlikte birkaç başka izin daha sağlanır.

Her iki sistem için de ortak olan, kök adı geçtikten sonra yol adına uygulanan yapıdır. yol adı c:/abc/xyz/def.extiçin:

  • Kök adı şeklindedir c:.

  • Kök dizin şeklindedir /.

  • Kök yol şeklindedir c:/.

  • Göreli yol şeklindedir abc/xyz/def.ext.

  • Üst yol şeklindedir c:/abc/xyz.

  • Dosya adı şeklindedir def.ext.

  • Gövde şeklindedir def.

  • Uzantı: .ext.

Küçük bir fark, bir yol adındaki dizin dizisi arasında tercih edilen ayırıcıdır. Her iki işletim sistemi de eğik çizgi /yazmanızı sağlar, ancak bazı bağlamlarda Windows ters eğik çizgi \tercih eder. Uygulama, tercih edilen ayırıcısını içindeki veri üyesinde preferred_separator pathdepolar.

Son olarak, path nesnelerin önemli bir özelliği vardır: üst bilgisinde <fstream>tanımlanan sınıflarda bir dosya adı bağımsız değişkeninin gerekli olduğu her yerde bunları kullanabilirsiniz.

Daha fazla bilgi ve kod örnekleri için bkz . Dosya sistemi gezintisi (C++).

Üyeler

Sınıflar

Veri Akışı Adı Açıklama
directory_entry sınıfı veya recursive_directory_iterator tarafından directory_iterator döndürülen ve pathiçeren bir nesnesini açıklar.
directory_iterator sınıfı Bir dosya sistemi dizinindeki dosya adları aracılığıyla sıralayan bir giriş yineleyicisini açıklar.
filesystem_error sınıfı Alt düzey sistem taşma durumunu bildirmek için atılan özel durumlar için temel sınıf.
path sınıfı Dosya adı olarak kullanıma uygun şablon türüne String sahip bir nesneyi depolayan bir sınıf tanımlar.
recursive_directory_iterator sınıfı Bir dosya sistemi dizinindeki dosya adları aracılığıyla sıralayan bir giriş yineleyicisini açıklar. Yineleyici alt dizinlere de inebilir.
file_status sınıfı bir file_typesarmalar.

Yapılar

Veri Akışı Adı Açıklama
space_info yapı Birim hakkındaki bilgileri tutar.

İşlevler

<filesystem> işlevleri

İşleçler

<filesystem> Işleç

Listelemeler

Veri Akışı Adı Açıklama
copy_options copy_file ile kullanılan ve bir hedef dosyanın zaten mevcut olup olmadığını belirleyen bir numaralandırma.
directory_options Dizin yineleyicileri için seçenekleri belirten bir numaralandırma.
file_type Dosya türleri için bir numaralandırma.
perm_options İşlev için seçenekleri permissions numaralandırır.
perms İzinleri ve seçenekleri izinlere iletmek için kullanılan bit maskesi türü

Ayrıca bkz.

Üst bilgi dosyaları başvurusu