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.
Dosya ve akış G/Ç (giriş/çıkış), bir depolama ortamına veya bir depolama alanından veri aktarımını ifade eder. .NET'te ad alanları, System.IO veri akışları ve dosyalar üzerinde hem zaman uyumlu hem de zaman uyumsuz olarak okuma ve yazmayı sağlayan türler içerir. Bu ad alanları, dosyalarda sıkıştırma ve sıkıştırmayı kaldırma gerçekleştiren türler ile kanallar ve seri bağlantı noktaları üzerinden iletişimi etkinleştiren türler de içerir.
Dosya, kalıcı depolaması olan sıralı ve adlandırılmış bayt koleksiyonudur. Dosyalarla çalışırken, dizin yolları, disk depolama alanı ve dosya ve dizin adları ile çalışırsınız. Buna karşılık, akış, birkaç depolama aracından (örneğin, diskler veya bellek) biri olabilecek bir yedekleme deposundan okumak ve bu depoya yazmak için kullanabileceğiniz bir bayt dizisidir. Diskler dışında birkaç yedekleme deposu olduğu gibi, ağ, bellek ve kanal akışları gibi dosya akışları dışında çeşitli akış türleri de vardır.
Dosyalar ve dizinler
Dosya ve dizinlerle etkileşimde bulunmak için System.IO ad alanındaki türleri kullanabilirsiniz. Örneğin, dosya ve dizinlerin özelliklerini alıp ayarlayabilir ve arama ölçütlerine göre dosya ve dizin koleksiyonlarını alabilirsiniz.
Yol adlandırma kuralları ve .NET Core 1.1 ve üzeri ile .NET Framework 4.6.2 ve sonraki sürümlerinde desteklenen DOS cihaz söz dizimi dahil olmak üzere Windows sistemleri için dosya yolunu ifade etmenin yolları için bkz. Windows sistemlerinde dosya yolu biçimleri.
Yaygın olarak kullanılan bazı dosya ve dizin sınıfları şunlardır:
File - dosyaları oluşturmak, kopyalamak, silmek, taşımak ve açmak için statik yöntemler sağlar ve nesne FileStream oluşturmaya yardımcı olur.
FileInfo - dosyaları oluşturmak, kopyalamak, silmek, taşımak ve açmak için örnek yöntemleri sağlar ve nesne FileStream oluşturmaya yardımcı olur.
Directory - dizinleri ve alt dizinleri oluşturmak, taşımak ve numaralandırmak için statik yöntemler sağlar.
DirectoryInfo - dizinleri ve alt dizinleri oluşturmak, taşımak ve numaralandırmak için örnek yöntemleri sağlar.
Path - dizin dizelerini platformlar arası bir şekilde işlemek için yöntemler ve özellikler sağlar.
Dosya sistemi yöntemlerini çağırırken her zaman sağlam özel durum işleme sağlamanız gerekir. Daha fazla bilgi için bkz. G/Ç hatalarını işleme.
Visual Basic kullanıcıları bu sınıfları kullanmaya ek olarak, dosya G/Ç için sınıfı tarafından Microsoft.VisualBasic.FileIO.FileSystem sağlanan yöntemleri ve özellikleri kullanabilir.
Bkz . Nasıl yapılır: Dizinleri Kopyalama, Nasıl Yapılır: Dizin Listesi Oluşturma ve Nasıl Yapılır: Dizinleri ve Dosyaları Listeleme.
Akarsu
Soyut temel sınıfı Stream okuma ve yazma baytlarını destekler. Akışları temsil eden tüm sınıflar Stream sınıfından devralır. Stream sınıfı ve türetilmiş sınıfları, veri kaynaklarının ve depolarının ortak bir görünümünü sağlar ve programcıyı işletim sisteminin ve temel cihazların belirli ayrıntılarından yalıtın.
Akışlar üç temel işlem içerir:
Okuma : Bir akıştan bir veri yapısına (bayt dizisi gibi) veri aktarma.
Yazma - veri kaynağından bir akışa veri aktarma.
Arama - akıştaki geçerli konumu sorgulama ve değiştirme.
Temel alınan veri kaynağına veya depoya bağlı olarak, bir akış bu özelliklerin yalnızca bazılarını destekleyebilir. Örneğin, PipeStream sınıfı aramayı desteklemez. Bir CanReadakışın , CanWriteve CanSeek özellikleri, akışın desteklediği işlemleri belirtir.
Yaygın olarak kullanılan bazı akış sınıfları şunlardır:
FileStream – bir dosyayı okumak ve dosyaya yazmak için.
IsolatedStorageFileStream – yalıtılmış depolamadaki bir dosyayı okumak ve dosyaya yazmak için.
MemoryStream – yedekleme deposu olarak belleğe okuma ve yazma için.
BufferedStream – okuma ve yazma işlemlerinin performansını geliştirmek için.
NetworkStream – ağ yuvaları üzerinden okuma ve yazma için.
PipeStream – anonim ve adlandırılmış borular üzerinden okuma ve yazma yapılması için.
CryptoStream – veri akışlarını şifreleme dönüşümlerine bağlamak için.
Veri akışları ile zaman uyumsuz çalışma örneği için bkz. Zaman Uyumsuz Dosya G/Ç.
Okuyucular ve yazarlar
System.IO ad alanı, ayrıca kodlanmış karakterleri akışlardan okuyup akışlara yazmak için türler de sağlar. Akışlar genellikle bayt girişi ve çıkışı için tasarlanmıştır. Okuyucu ve yazıcı türleri, kodlanmış karakterleri baytlara ve baytlardan dönüştürerek akış işleminin tamamlanmasını sağlar. Her sınıfın BaseStream özelliği aracılığıyla erişilebilen bir akışla her okuyucu ve yazar sınıfı ilişkilendirilir.
Yaygın olarak kullanılan okuyucu ve yazar sınıflarının bazıları şunlardır:
BinaryReader ve BinaryWriter – temel veri türlerini ikili değer olarak okumak ve yazmak için.
StreamReader ve StreamWriter – karakterleri baytlara dönüştürmek ve baytlardan karakterlere çevirmek için kodlama değeri kullanılarak karakterlerin okunup yazılması.
StringReader ve StringWriter – dizelere ve dizelerden karakterleri okumak ve yazmak için.
TextReader ve TextWriter – karakterleri ve dizeleri okuyan ve yazan diğer okuyucular ve yazarlar için soyut temel sınıflar olarak görev yapar, ancak ikili verileri okumaz.
Bkz . Nasıl yapılır: Dosyadan Metin Okuma, Nasıl yapılır: Dosyaya Metin Yazma, Nasıl yapılır: Dizeden Karakterleri Okuma ve Nasıl Yapılır: Dizeye Karakter Yazma.
Asenkron G/Ç işlemleri
Büyük miktarda veri okumak veya yazmak yoğun kaynak kullanımlı olabilir. Uygulamanızın kullanıcıya yanıt vermeye devam etmesi gerekiyorsa bu görevleri zaman uyumsuz olarak gerçekleştirmeniz gerekir. Senkron Girdi/Çıktı işlemlerinde, kaynak yoğun işlem tamamlanana kadar kullanıcı arabirimi iş parçacığı bloke edilir. Windows 8.x Store uygulamaları geliştirirken uygulamanızın çalışmayı durdurduğu izlenimini oluşturmamak için zaman uyumsuz G/Ç işlemlerini kullanın.
Zaman uyumsuz üyeler, adlarında Async gibi CopyToAsync, FlushAsync, ReadAsync ve WriteAsync yöntemleri içerir. Bu yöntemleri async ve await anahtar sözcükleriyle kullanırsınız.
Daha fazla bilgi için bkz. Zaman Uyumsuz Dosya Girdi/Çıktı.
Sıkıştırma
Sıkıştırma, depolama için bir dosyanın boyutunu küçültme işlemini ifade eder. Sıkıştırmayı açma, sıkıştırılmış bir dosyanın içeriğinin kullanılabilir biçimde ayıklanması işlemidir. Ad System.IO.Compression alanı, dosyaları ve akışları sıkıştırmaya ve açmaya yönelik türler içerir.
Aşağıdaki sınıflar, dosyaları ve akışları sıkıştırırken ve açarken sıklıkla kullanılır.
ZipArchive – zip arşivinde girdileri oluşturmak ve almak için.
ZipArchiveEntry – sıkıştırılmış bir dosyayı temsil etmek için.
ZipFile – sıkıştırılmış paket oluşturmak, ayıklamak ve açmak için.
ZipFileExtensions – sıkıştırılmış pakette girdiler oluşturmak ve ayıklamak için.
DeflateStream – Deflate algoritmasını kullanarak akışları sıkıştırmak ve açmak için.
GZipStream – gzip veri biçiminde akışları sıkıştırmak ve açmak için.
Bkz . Nasıl yapılır: Dosyaları Sıkıştırma ve Ayıklama.
Yalıtılmış depolama
Yalıtılmış depolama, kodu kaydedilen verilerle ilişkilendirmenin standartlaştırılmış yollarını tanımlayarak yalıtım ve güvenlik sağlayan bir veri depolama mekanizmasıdır. Depolama, kullanıcı, derleme ve (isteğe bağlı olarak) etki alanı tarafından yalıtılmış bir sanal dosya sistemi sağlar. Yalıtılmış depolama, uygulamanızın kullanıcı dosyalarına erişme izni olmadığında özellikle yararlıdır. Uygulamanızın ayarlarını veya dosyalarını bilgisayarın güvenlik ilkesi tarafından denetlenen bir şekilde kaydedebilirsiniz.
Yalıtılmış depolama, Windows 8.x Store uygulamalarında kullanılamaz; bunun yerine ad alanında uygulama veri sınıflarını Windows.Storage kullanın. Daha fazla bilgi için bkz. Uygulama verileri.
Yalıtılmış depolama uygulanırken aşağıdaki sınıflar sıklıkla kullanılır:
IsolatedStorage – yalıtılmış depolama uygulamaları için temel sınıfı sağlar.
IsolatedStorageFile – dosyaları ve dizinleri içeren yalıtılmış bir depolama alanı sağlar.
IsolatedStorageFileStream - Bir dosyayı yalıtılmış depolamada kullanıma sunar.
Bkz. Yalıtılmış Depolama.
Windows Mağazası uygulamalarında G/Ç işlemleri
Windows 8.x Store uygulamaları için .NET, akışlardan okuma ve akışlara yazma için birçok tür içerir; ancak bu küme tüm .NET G/Ç türlerini içermez.
Windows 8.x Store uygulamalarında G/Ç işlemlerini kullanırken dikkat edilmesi gereken bazı önemli farklar:
Özellikle , FileFileInfo ve Directorygibi DirectoryInfodosya işlemleriyle ilgili türler Windows 8.x Mağazası uygulamaları için .NET'e dahil değildir. Bunun yerine, Windows Çalışma Zamanı'nın ad alanında Windows.Storage ve StorageFilegibi StorageFolder türleri kullanın.
Yalıtılmış depolama kullanılamaz; bunun yerine uygulama verilerini kullanın.
UI iş parçacığının engellenmesini önlemek için ReadAsync ve WriteAsync gibi zaman uyumsuz yöntemleri kullanın.
Yol tabanlı sıkıştırma türleri ZipFile ve ZipFileExtensions kullanılamaz. Bunun yerine ad alanında Windows.Storage.Compression türleri kullanın.
Gerekirse .NET Framework akışları ile Windows Çalışma Zamanı akışları arasında dönüştürme yapabilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: .NET Framework Akışları ile Windows Çalışma Zamanı Akışları Arasında Dönüştürme veya WindowsRuntimeStreamExtensions.
Windows 8.x Store uygulamasında G/Ç işlemleri hakkında daha fazla bilgi için bkz . Hızlı Başlangıç: Dosyaları okuma ve yazma.
G/Ç ve güvenlik
Ad alanında sınıfları kullandığınızda, dosyalara System.IO ve dizinlere erişimi denetlemek için erişim denetim listeleri (ACL'ler) gibi işletim sistemi güvenlik gereksinimlerini izlemeniz gerekir. Bu gereksinim, tüm FileIOPermission gereksinimlere ek olarak sağlanır. ACL'leri program aracılığıyla yönetebilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: Erişim Denetimi Listesi Girdileri Ekleme veya Kaldırma.
Varsayılan güvenlik ilkeleri, İnternet veya intranet uygulamalarının kullanıcının bilgisayarındaki dosyalara erişmesini engeller. Bu nedenle, internet veya intranet üzerinden indirilecek kod yazarken fiziksel bir dosyanın yolunu gerektiren G/Ç sınıflarını kullanmayın. Bunun yerine, .NET uygulamaları için yalıtılmış depolama kullanın.
Güvenlik denetimi yalnızca akış oluşturulduğunda gerçekleştirilir. Bu nedenle, bir akışı açtıktan sonra daha az güvenilen koda veya uygulama etki alanlarına geçirmeyin.
İlgili konular
Yaygın G/Ç Görevleri
Dosyalar, dizinler ve akışlarla ilişkilendirilmiş G/Ç görevlerinin listesini ve her görev için ilgili içerik ve örneklerin bağlantılarını sağlar.Asenkron Dosya G/Ç
Zaman uyumsuz G/Ç'nin performans avantajlarını ve temel çalışmasını açıklar.Yalıtılmış Depolama
Kodu kaydedilen verilerle ilişkilendirmenin standartlaştırılmış yollarını tanımlayarak yalıtım ve güvenlik sağlayan bir veri depolama mekanizmasını açıklar.Kanallar
.NET'te anonim ve adlandırılmış kanal işlemlerini açıklar.Memory-Mapped Dosyaları
Sanal bellekteki diskteki dosyaların içeriğini içeren belleğe eşlenmiş dosyaları açıklar. Çok büyük dosyaları düzenlemek ve işlemler arası iletişim için paylaşılan bellek oluşturmak için bellekle eşlenmiş dosyaları kullanabilirsiniz.