Dosya ve Akış G/Ç

Dosya ve akış I/O (giriş/çıkış) bir veri aktarımının depolama ortamına mı gittiğini yoksa oradan mı geldiğini belirtir. .NET'te ad alanları, veri akışları ve dosyalar üzerinde hem zaman uyumlu hem de zaman uyumsuz olarak okuma ve yazmayı etkinleştiren System.IO türler içerir. Bu ad alanları aynı zamanda dosyaları sıkıştırma ve sıkıştırmayı açma işini gerçekleştiren türleri ve borular ve seri bağlantı noktaları üzerinden iletişim sağlayan türleri içerir.

Bir dosya kalıcı depolaması olan bir sipariş edilen ve adlandırılmış bayt toplamıdır. Bu dosyalarla çalışırken dizin yolları, disk depolama ve dosya ve dizin adları ile çalışırsınız. Buna karşılık akış birkaç depolama ortamından biri olan (örneğin disk veya bellek) yedekleme deposuna yazma ve yedekleme deposundan okuma için kullanılan bir sıra bayttır. Disklerden başka sadece birkaç yedekleme deposu olduğu gibi ağ, bellek ve boru akışları gibi dosya akışlarından farklı olan birkaç tür akış vardır.

Dosyalar ve dizinler

Dosya ve dizinlerle etkileşim System.IO kurmak için ad alanı türlerini kullanabilirsiniz. Örneğin, dosyalar ve dizinler için özellikleri alabilir ve ayarlayabilirsiniz. Ayrıca arama ölçütlerine dayanarak bir dizi dosya ve dizini alabilirsiniz.

Yol adlandırma kuralları ve .NET Core 1.1 ve sonraki ve .NET Framework 4.6.2 ve sonraki bir işletim sistemlerinde desteklenen DOS cihaz söz dizimi dahil olmak üzere Windows sistemleri için bir dosya yolu ifade etme yolları için bkz. Windowssistemlerinde dosya yolu biçimleri.

Yaygın olarak kullanılan bazı dosya ve dizin sınıfları şunlardır:

  • File - dosyaları oluşturmak, kopyalamak, silmek, hareket etmek ve açmak için statik yöntemler sağlar ve nesne oluşturmaya yardımcı FileStream olur.

  • FileInfo - dosyaları oluşturmak, kopyalamak, silmek, hareket etmek ve açmak için örnek yöntemleri sağlar ve nesne oluşturmaya yardımcı FileStream olur.

  • Directory - dizinler ve alt dizinler aracılığıyla oluşturma, taşıma ve sabitlerken statik yöntemler sağlar.

  • DirectoryInfo - dizinler ve alt dizinler aracılığıyla oluşturma, taşıma ve numaralara göre örnek yöntemleri sağlar.

  • Path - Dizin dizelerini platformlar arası bir şekilde işleme yöntemleri ve özellikleri sağlar.

Dosya sistemi yöntemleri çağrılırken her zaman güçlü özel durum işleme sağlayabilirsiniz. Daha fazla bilgi için bkz. I/O hatalarını işleme.

Bu sınıfları kullanmaya ek olarak, Visual Basic kullanıcılar dosya I/O için sınıf tarafından Microsoft.VisualBasic.FileIO.FileSystem sağlanan yöntemleri ve özellikleri kullanabilir.

Bkz. Nasıl kullanılır: DizinleriKopyalama, Nasıl Musunuz? Dizin Listesi Oluşturma ve Nasıl 2. Nasıl Kullanılır: Dizinleri ve Dosyaları Listeleme.

Akışlar

Soyut temel sınıf, Stream baytları okumayı ve yazmayı destekler. Akışları temsil eden tüm sınıflar sınıfından Stream devralınır. sınıfı ve türetilen sınıfları veri kaynaklarının ve depoların ortak bir görünümünü sağlar ve programcıyı işletim sisteminin ve temel alınan cihazların belirli Stream ayrıntılarından yalıtır.

Akışlar üç temel işlemi içerir:

  • Okuma - bir bayt dizisi gibi bir veri yapısı içine bir akıştan veri aktarma.

  • Yazma - veri kaynağından bir akışa veri aktarma.

  • Arama - geçerli konumu bir akış içinde sorgulama ve değiştirme.

Veri kaynağına veya havuza bağlı olarak, bir akış yalnızca bu yeteneklerin bazılarını destekleyebilir. Örneğin, PipeStream sınıfı arama desteklemez. Akışın CanRead CanWrite , ve CanSeek özellikleri, akışın desteklediği işlemleri belirtir.

Bazı yaygın olarak kullanılan akış sınıfları şunlardır:

  • FileStream – bir dosyayı okumak ve dosyaya yazmak için.

  • IsolatedStorageFileStream – yalıtılmış depolamada bir dosyaya okuma ve yazma için.

  • MemoryStream – arka depo 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ış kanallar üzerinde okuma ve yazma için.

  • CryptoStream – veri akışlarını şifreleme dönüşümleri ile bağlama.

Akışlarla zaman uyumsuz çalışma örneği için bkz. Zaman Uyumsuz Dosya I/O.

Okuyucular ve yazarlar

Ad System.IO alanı, kodlanmış karakterleri akışlardan okumak ve akışlara yazmak için de türler sağlar. Genellikle, akışlar giriş ve çıkış baytı için tasarlanmıştır. Okuyucu ve yazıcı türleri kodlanmış karakterlerin baytlardan ve baytlara dönüşümünü işler ve böylece akış işlemi tamamlar. Her okuyucu ve yazıcı sınıfı bir akışla ilişkilendirilerek sınıfın özelliği aracılığıyla BaseStream alınamaz.

Bazı yaygın olarak kullanılan okuyucu ve yazıcı sınıfları şunlardır:

  • BinaryReader and BinaryWriter : ilkel veri türlerini ikili değerler olarak okumak ve yazmak için.

  • StreamReader and: StreamWriter karakterleri baytlara ve baytlara dönüştürmek için bir kodlama değeri kullanarak karakterleri okumak ve yazmak için.

  • StringReader and: StringWriter dizelere karakter okumak ve dizelerden karakter yazmak için.

  • TextReader and : karakterleri ve dizeleri okuyan ve yazan ancak ikili verileri okumayan diğer okuyucular ve yazarlar için TextWriter soyut temel sınıflar olarak görev yapın.

Bkz. Nasıl:Dosyadan Metin Okuma , Nasıl Okunur:Dosyaya Metin Yazma , Nasıl okunur:Bir Dizeden Karakterleri Okuma ve Nasıl İşle: Dizeye Karakter Yazma.

Zaman Uyumsuz I/O işlemleri

Büyük miktarda veriyi okumak veya yazmak kaynak yoğunluğu olabilir. Eğer uygulamanız kullanıcıya hassas kalması gerekiyorsa bu işlemleri zaman uyumsuz gerçekleştirebilirsiniz. Zaman uyumlu G/Ç işlemleri ile UI iş parçacığı kaynak yoğunluğu işlemi bitene kadar durdurulur. Windows 8.x Store uygulamalarını geliştirerek, uygulamanın çalışmayı durdurmuş olduğu izlenimini oluşturmasını önlemek için zaman uyumsuz I/O işlemlerini kullanın.

Zaman uyumsuz üyeler , , ve yöntemleri Async gibi CopyToAsync FlushAsync ReadAsync WriteAsync adlarında yer almaktadır. Bu yöntemleri ve anahtar sözcükleriyle async await kullanırsınız.

Daha fazla bilgi için bkz. Zaman Uyumsuz Dosya I/O.

Sıkıştırma

Sıkıştırma depolama için bir dosyanın boyutunu küçültme işlemini gösterir. Açma sıkıştırılmış bir dosyanın içeriğini ayıklanması işlemidir ve böylece kullanılabilir bir formata girerler. Ad System.IO.Compression alanı, dosyaları ve akışları sıkıştırmak ve sıkıştırmayı sıkıştırmak için türleri içerir.

Aşağıdaki sınıflar, dosya ve akışları sıkıştırma ve açma işlemi olurken sıkça kullanılır.

  • ZipArchive – zip arşivinde girdileri oluşturmak ve almak için.

  • ZipArchiveEntry – sıkıştırılmış bir dosyayı temsil için.

  • ZipFile – sıkıştırılmış bir paket oluşturmak, ayıklamak ve açmak için.

  • ZipFileExtensions – sıkıştırılmış bir pakette giriş oluşturmak ve ayıklamak için.

  • DeflateStream – Deflate algoritmasını kullanarak akışları sıkıştırmak ve sıkıştırmasını sıkıştırmak için.

  • GZipStream – gzip veri biçimindeki akışları sıkıştırmak ve açmak için.

Bkz. Nasıl kullanılır: Dosyaları Sıkıştırma ve Ayıklama.

Yalıtılmış depolama

Yalıtılmış depolama, kaydedilmiş verilerle bir birlikte ilişkili bir kodun standartlaştırılmış yolları tanımlayarak yalıtım ve güvenlik sağlayan bir veri depolama mekanizmasıdır. Depolama kullanıcı, derleme ve etki alanı (isteğe bağlı) tarafından izole edilmiş bir sanal bir dosya sistemi sağlar. Yalıtılmış depolama özellikle uygulamanızın kullanıcı dosyalarına erişim izni yokken yararlıdır. Uygulamanız bilgisayarın güvenlik ilkesi tarafından kontrol edilir bir şekilde ayarlar veya dosyaları kaydedebilirsiniz.

Windows 8.x Store uygulamaları için yalıtılmış depolama kullanılamaz; bunun yerine, ad alanı içinde uygulama veri sınıflarını Windows.Storage kullanın. Daha fazla bilgi için bkz. Uygulama verileri.

Aşağıdaki sınıflar yalıtılmış depolama uygularken sık kullanılır:

Bkz. Yalıtılmış Depolama.

Windows Store uygulamalarına yönelik I/O işlemleri

Windows 8.x Mağazası 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 I/O türlerini içermez.

Windows 8.x Mağazası uygulamalarında I/O işlemlerini kullanırken dikkat etmek gereken bazı önemli farklar:

Gerekirse, .NET Framework akışları ve Windows çalışma zamanı akışları arasında dönüşüm yapabilirsiniz. Daha fazla bilgi için, bkz. How to: Convert Between .NET Framework Akışlar and Windows Runtime Akışlar veya WindowsRuntimeStreamExtensions .

Windows 8.x Store uygulamasındaki I/O işlemleri hakkında daha fazla bilgi için bkz. Hızlı Başlangıç: Dosyaları okuma ve yazma.

I/O ve güvenlik

Ad alanı sınıflarını kullanırken, dosyalara ve dizinlere erişimi kontrol etmek için erişim denetim listeleri System.IO (ACL'ler) gibi işletim sistemi güvenlik gereksinimlerini izlemeniz gerekir. Bu gereksinim, tüm gereksinimlere ek FileIOPermission olarak bir gereksinimdir. ACL'leri program aracılığıyla yönetebilirsiniz. Daha fazla bilgi için, bkz. How to: Add or Remove Access Control List Entries.

Varsayılan güvenlik ilkeleri, İnternet veya intranet uygulamalarının kullanıcının bilgisayarına erişmesini önler. Bu nedenle, internet veya intranet üzerinden indirilecek kod yazarken fiziksel bir dosyanın yolunu gerektiren I/O 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çmayın ve sonra onu en az güvenilen koda veya uygulama alanına geçirin.

  • Ortak I/O Görevleri
    Dosyalar, dizinler, akışları ve ilgili içerik ile her görevin örneği ile ilişkili g/ç görevlerinin bir listesini sağlar.

  • Zaman Uyumsuz Dosya I/Ç
    Zaman uyumsuz I/O'nun performans avantajlarını ve temek işleyişini açıklar.

  • Yalıtılmış Depolama
    Kaydedilmiş verilerle bir birlikte ilişkili bir kodun standartlaştırılmış yolları tanımlayarak yalıtım ve güvenlik sağlayan bir veri depolama mekanizmasını tanımlar.

  • Boru
    .NET'te anonim ve adlandırılmış kanal işlemlerini açıklar.

  • Belleğe Eşlenmiş Dosyalar
    Sanal bellek içindeki disk üzerinde bulunan dosyaların içeriğini içeren bellek eşlemeli dosyaları açıklar. Büyük dosyaları düzenlemek ve işlemler arası iletişim için olan paylaşılan belleği oluşturmak için bellek eşlemeli dosyaları kullanabilirsiniz.