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ı, System.IO veri akışlarında ve dosyalarda hem zaman uyumlu hem de zaman uyumsuz olarak okuma ve yazmayı sağlayan 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şime geçmek için ad alanında türleri System.IO 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 üzeri ile .NET Framework 4.6.2 ve sonraki sürümlerde desteklenen DOS cihaz söz dizimi dahil olmak üzere Windows sistemler 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şlemeye yönelik yöntemler ve özellikler sağlar.

Dosya sistemi yöntemlerini çağırırken her zaman güçlü ö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.

Akışlar

Soyut temel sınıfı Stream okuma ve yazma baytlarını destekler. Akışları temsil eden tüm sınıflar sınıfından devralır Stream . 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ş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ı aramayı desteklemez. Bir CanReadakışın , CanWriteve 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ış 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ış kanallar üzerinden okuma ve yazma için.

  • CryptoStream – veri akışlarını şifreleme dönüşümlerine bağlamak için.

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

Okuyucular ve yazarlar

Ad System.IO alanı ayrıca akışlardan kodlanmış karakterleri okumak ve akışlara yazmak için 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ı, sınıfın BaseStream özelliği aracılığıyla alınabilen bir akışla ilişkilendirilir.

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

  • BinaryReader ve BinaryWriter – temel veri türlerini ikili değer olarak okumak ve yazmak için.

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

  • StringReader ve StringWriter – dizelere ve dizelerden karakterleri okumak ve yazmak için.

  • TextReader ve TextWriter – karakterleri ve dizeleri okuyan ve yazan ancak ikili verileri okuyan ve yazmayan diğer okuyucular ve yazarlar için soyut temel sınıflar olarak hizmet eder.

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.

Zaman uyumsuz G/Ç 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. Uygulamanızın çalışmayı durdurduğu izlenimini oluşturmamak için Windows 8.x Store uygulamaları geliştirirken zaman uyumsuz G/Ç işlemleri kullanın.

Zaman uyumsuz üyeler , , FlushAsyncReadAsyncve WriteAsync yöntemleri gibi CopyToAsyncadlarında yer Async alır. Bu yöntemleri ve await anahtar sözcükleriyle async birlikte kullanırsınız.

Daha fazla bilgi için bkz. Zaman Uyumsuz Dosya G/Ç.

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ırmaya ve sıkıştırmayı kaldırmaya yönelik türler 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şivindeki girdileri oluşturmak ve almak için.

  • ZipArchiveEntry – sıkıştırılmış bir dosyayı temsil etme 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ış paketteki girdileri 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ç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, 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.

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.

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

Bkz. Yalıtılmış Depolama.

Windows Store uygulamalarında G/Ç 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 G/Ç türlerini içermez.

Windows 8.x Store uygulamalarında G/Ç işlemlerini kullanırken dikkat edilmesi 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. 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: Access Control Listesi Girdilerini 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çmayın ve sonra onu en az güvenilen koda veya uygulama alanına geçirin.

  • Yaygın G/Ç 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 G/Ç
    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.

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

  • Belleğe Eşlenen 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.