Dosyalarla çalışma

Bu konu, Evrensel Windows Platformu (UWP) uygulamasındaki dosyaları okumaya ve yazmaya başlamak için bilmeniz gerekenleri kapsar. Ana API'ler ve türler tanıtılır ve daha fazla bilgi edinmenize yardımcı olacak bağlantılar sağlanır.

Bu bir öğretici değildir. Öğretici istiyorsanız bkz. Dosya oluşturma, yazma ve okuma. Bu kaynak, dosya oluşturma, okuma ve yazma işlemlerine ek olarak arabelleklerin ve akışların nasıl kullanılacağını da gösterir. Ayrıca, dosya oluşturma, okuma, yazma, kopyalama ve silmenin yanı sıra uygulamanızın yeniden kolayca erişebilmesi için dosya özelliklerini alma ve bir dosya veya klasörü anımsama adımlarını gösteren Dosya erişim örneği ilginizi çekebilir.

Bir dosyadan metin yazmak ve okumak için koda ve uygulamanın yerel, dolaşım ve geçici klasörlerine nasıl erişebileceğimize bakacağız.

Bilmeniz gerekenler

Bir dosyadan/dosyaya metin okumak veya yazmak için bilmeniz gereken ana türler şunlardır:

  • Windows.Storage.StorageFile bir dosyayı temsil eder. Bu sınıf dosya hakkında bilgi sağlayan özelliklere ve dosyaları oluşturma, açma, kopyalama, silme ve yeniden adlandırma yöntemlerine sahiptir. Dize yollarıyla ilgilenmeye alışık olabilirsiniz. Bazı Windows Çalışma Zamanı API'leri bir dizi yolu alır, ancak daha sık, UWP'de çalıştığınız bazı dosyaların yolu olmayabileceği veya hantallaşmış bir yolu olabileceği için bir dosyayı temsil etmek amacıyla StorageFile kullanırsınız. Bir metin yolunu StorageFile'e dönüştürmek için StorageFile.GetFileFromPathAsync() kullanın.

  • FileIO sınıfı, metin okumak ve yazmak için kolay bir yol sağlar. Bu sınıf ayrıca bir bayt dizisini veya bir arabelleğin içeriğini okuyabilir/yazabilir. Bu sınıf , PathIO sınıfına çok benzer. Temel fark, PathIO'gibi bir dize yolu almak yerine StorageFilealmasıdır.

  • Windows.Storage.StorageFolder bir klasörü (dizin) temsil eder. Bu sınıfta dosya oluşturma, klasörün içeriğini sorgulama, klasör oluşturma, yeniden adlandırma ve silme yöntemleri ve klasör hakkında bilgi sağlayan özellikler bulunur.

StorageFolder edinmenin yaygın yolları şunlardır:

  • Kullanıcının kullanmak istediği klasöre gitmesine olanak tanıyan Windows.Storage.Pickers.FolderPicker.
  • Uygulamaya yerel olan yerel, dolaşım ve geçici klasörler gibi klasörlerden birine özgü olan StorageFolder'ı sağlayan Windows.Storage.ApplicationData.Current.
  • Windows.Storage.KnownFolders, Müzik veya Resim kitaplıkları gibi bilinen kütüphaneler için StorageFolder sağlar.

Dosyaya metin yazma

Bu giriş için basit bir senaryoya odaklanacağız: metin okuma ve yazma. Dosyaya metin yazmak için FileIO sınıfını kullanan bazı kodlara bakarak başlayalım.

Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.CreateFileAsync("test.txt",
        Windows.Storage.CreationCollisionOption.OpenIfExists);

await Windows.Storage.FileIO.WriteTextAsync(file, "Example of writing a string\r\n");

// Append a list of strings, one per line, to the file
var listOfStrings = new List<string> { "line1", "line2", "line3" };
await Windows.Storage.FileIO.AppendLinesAsync(file, listOfStrings); // each entry in the list is written to the file on its own line.

Öncelikle dosyanın nerede bulunması gerektiğini belirleriz. Windows.Storage.ApplicationData.Current.LocalFolder , yüklendiğinde uygulamanız için oluşturulan yerel veri klasörüne erişim sağlar. Uygulamanızın erişebileceği klasörler hakkında ayrıntılı bilgi için bkz. Dosya sistemine erişme.

Ardından, dosyayı oluşturmak için StorageFolder'ı kullanırız (veya zaten varsa açarız).

FileIO sınıfı, dosyaya metin yazmak için kullanışlı bir yol sağlar. FileIO.WriteTextAsync() , dosyanın tüm içeriğini sağlanan metinle değiştirir. FileIO.AppendLinesAsync() dosyaya bir dize koleksiyonu ekler; satır başına bir dize yazar.

Dosyadan metin okuma

Dosya yazarken olduğu gibi, dosyayı okumak da dosyanın bulunduğu yeri belirtmeyle başlar. Yukarıdaki örnektekiyle aynı konumu kullanacağız. Ardından içeriğini okumak için FileIO sınıfını kullanacağız.

Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.GetFileAsync("test.txt");

string text = await Windows.Storage.FileIO.ReadTextAsync(file);

Ayrıca dosyanın her satırını bir koleksiyonda her biri ayrı bir dize olarak okuyabilirsiniz IList<string> contents = await Windows.Storage.FileIO.ReadLinesAsync(sampleFile);

Dosya sistemine erişme

UWP platformunda, kullanıcı verilerinin bütünlüğünü ve gizliliğini sağlamak için klasör erişimi kısıtlanır.

Uygulama klasörleri

Bir UWP uygulaması yüklendiğinde, depolamak için c:\users<kullanıcı adı>\AppData\Local\Packages<uygulama paketi tanımlayıcısı>\ altında uygulamanın yerel, dolaşım ve geçici dosyaları gibi çeşitli klasörler oluşturulur. Uygulamanın bu klasörlere erişmek için herhangi bir özellik bildirmesi gerekmez ve bu klasörlere diğer uygulamalar tarafından erişilemez. Uygulama kaldırıldığında bu klasörler de kaldırılır.

Yaygın olarak kullanacağınız uygulama klasörlerinden bazıları şunlardır:

  • LocalState: Geçerli cihaza ait yerel veriler için. Cihaz yedeklendiğinde, bu dizindeki veriler OneDrive'daki bir yedekleme görüntüsüne kaydedilir. Kullanıcı cihazı sıfırlarsa veya değiştirirse veriler geri yüklenir. Bu klasöre Windows.Storage.ApplicationData.Current.LocalFolder. ile erişin. OneDrive'a yedeklenmemesini istediğiniz yerel verileri, ile erişebileceğiniz Windows.Storage.ApplicationData.Current.LocalCacheFolderiçinde kaydedin.

  • RoamingState: Burada depolanan veriler artık dolaşımda değildir (Windows 11 itibarıyla) ancak klasör hala kullanılabilir durumdadır. Dolaşım klasörüne Windows.Storage.ApplicationData.Current.RoamingFolder ile erişin. Önerilen değişiklik Azure App Service. Azure App Service yaygın olarak desteklenir, iyi belgelenmiş, güvenilirdir ve iOS, Android ve web gibi platformlar arası/ekosistemler arası senaryoları destekler.

  • TempState: Uygulama çalışmadığında silinebilecek veriler için. Bu klasöre Windows.Storage.ApplicationData.Current.TemporaryFolder ile erişin.

Dosya sisteminin geri kalanına erişme

UWP uygulaması, bildirimine ilgili özelliği ekleyerek belirli bir kullanıcı kitaplığına erişme amacını bildirmelidir. Daha sonra uygulama yüklendiğinde kullanıcıdan belirtilen kitaplığa erişme yetkisine sahip olduğunu doğrulaması istenir. Aksi takdirde uygulama yüklenmez. Resimlere, videolara ve müzik kitaplıklarına erişme özellikleri vardır. Tam liste için bkz. Uygulama özelliği bildirimi . Bu kitaplıklar için bir StorageFolder almak için Windows.Storage.KnownFolders sınıfını kullanın.

Belge kitaplığı

Kullanıcının belge kitaplığına erişme özelliği olsa da, bu özellik kısıtlanmıştır; bu da, özel onay almak için bir işlem izlemediğiniz sürece bunu bildiren bir uygulamanın Microsoft Store tarafından reddedileceği anlamına gelir. Genel kullanıma yönelik değildir. Bunun yerine, kullanıcının klasöre veya dosyaya gitmesine izin veren dosya veya klasör seçicilerini kullanın (bkz. Seçiciyle dosya ve klasör açma ve Seçiciyle dosya kaydetme). Kullanıcı bir klasöre veya dosyaya gittiği zaman, uygulamaya erişim iznini örtük olarak vermiş olur ve sistem erişime izin verir.

Genel erişim

Alternatif olarak, uygulamanız bildiriminde kısıtlı broadFileSystem özelliğini bildirebilir ve bu da Microsoft Store onayı gerektirir. Ardından uygulama, bir dosya veya klasör seçicinin müdahalesine gerek kalmadan kullanıcının erişimi olan herhangi bir dosyaya erişebilir.

Uygulamaların erişebileceği konumların kapsamlı bir listesi için bkz. Dosya erişim izinleri.

Yararlı API'ler ve belgeler

Burada, dosya ve klasörlerle çalışmaya başlamanıza yardımcı olmak için API'lerin ve diğer yararlı belgelerin hızlı bir özeti verilmiştir.

Yararlı API'ler

Uygulama Programlama Arayüzü (API) Açıklama
Windows.Storage.StorageFile Dosya hakkında bilgi ve dosyaları oluşturma, açma, kopyalama, silme ve yeniden adlandırma yöntemleri sağlar.
Windows.Storage.StorageFolder Klasör, dosya oluşturma yöntemleri ve klasörleri oluşturma, yeniden adlandırma ve silme yöntemleri hakkında bilgi sağlar.
FileIO Metin okumak ve yazmak için kolay bir yol sağlar. Bu sınıf ayrıca bir bayt dizisini veya bir arabelleğin içeriğini okuyabilir/yazabilir.
PathIO Dosya için dize yolu verilen bir dosyadan/dosyaya metin okuma/yazmanın kolay bir yolunu sağlar. Bu sınıf ayrıca bir bayt dizisini veya bir arabelleğin içeriğini okuyabilir/yazabilir.
DataReader ve DataWriter Bir akıştan okuma ve bir akışa yazma işlemleri için arabellekleri, baytları, tamsayıları, GUID'leri, süreleri ve daha fazlasını okuyup yazın.
Windows.Storage.ApplicationData.Current Uygulama için oluşturulan yerel klasör, dolaşım klasörü ve geçici dosyalar klasörü gibi klasörlere erişim sağlar.
Windows.Storage.Pickers.FolderPicker Kullanıcının bir klasör seçmesine izin verir ve klasör için bir StorageFolder döndürür. Uygulamanın varsayılan olarak erişemeyen konumlara bu şekilde erişebilirsiniz.
Windows.Storage.Pickers.FileOpenPicker Kullanıcının açmak üzere bir dosya seçmesine izin verir ve bu dosya için bir StorageFile döndürür. Uygulamanın varsayılan olarak erişebildiği bir dosyaya bu şekilde erişebilirsiniz.
Windows.Storage.Pickers.FileSavePicker Kullanıcının bir dosya için dosya adını, uzantıyı ve depolama konumunu seçmesine izin verir. StorageFile'i döndürür. Bu, bir dosyayı uygulamanın varsayılan olarak erişemeyen bir konuma kaydetme yöntemidir.
Windows.Storage.Streams ad alanı Okuma ve yazma akışlarını kapsar. Özellikle, arabellekleri, baytları, tamsayıları, GUID'leri, zaman aralıklarını ve daha fazlasını okuyan ve yazan DataReader ve DataWriter sınıflarını inceleyin.

Yararlı belgeler

Konu Açıklama
Windows.Storage Ad Alanı API başvuru belgeleri.
dosyalar, klasörler ve kitaplıklar Kavramsal belgeler.
dosya oluşturma, yazma ve okuma Metin, ikili veri ve akış oluşturma, okuma ve yazma işlemleri kapsar.
Uygulama verilerini yerel olarak depolamaya başlama Yerel verileri kaydetmeye yönelik en iyi yöntemlerin yanı sıra LocalSettings ve LocalCache klasörünün amacını da kapsar.
Ayarları ve diğer uygulama verilerini depolama ve alma Yerel, dolaşım ve geçici klasörler gibi çeşitli uygulama veri depolarına genel bir bakış sağlar.
Dosya erişim izinleri Uygulamanızın erişebileceği dosya sistemi konumları hakkında bilgiler.
Seçici ile dosya ve klasörleri açma Kullanıcının seçici kullanıcı arabirimi aracılığıyla karar vermesine izin vererek dosya ve klasörlere nasıl erişeceklerini gösterir.
Windows.Storage.Streams Akışları okumak ve yazmak için kullanılan türler.
Müzik, Resimler ve Videolar kitaplıklarındaki dosya ve klasörleri Kitaplıklardan klasörleri kaldırmayı, kitaplıktaki klasörlerin listesini almayı ve depolanan fotoğrafları, müzikleri ve videoları keşfetmeyi kapsar.

Yararlı kod örnekleri

Kod örneği Açıklama
Uygulama verileri örneği Uygulama veri API'lerini kullanarak her kullanıcıya özgü verilerin nasıl depolanıp alındığını gösterir.
Dosya erişimi örneği Dosya oluşturma, okuma, yazma, kopyalama ve silme adımlarını gösterir.
Dosya Seçici Örneği Kullanıcının kullanıcı arabirimiyle bunları seçmesine izin vererek dosya ve klasörlere nasıl erişileceğini ve kullanıcının kaydedilecek dosyanın adını, dosya türünü ve konumunu belirtebilmesi için bir dosyanın nasıl kaydedileceğini gösterir.
JSON örneği Windows.Data.Json ad alanıkullanarak JavaScript Nesne Gösterimi (JSON) nesnelerini, dizilerini, dizelerini, sayılarını ve boole'lerini kodlamayı ve kodunu çözmeyi gösterir.
Ek kod örnekleri Seçin Dosyalar, klasör ve kitaplıklar kategori açılır listesinden.