System.IO.FileStream sınıfı
Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.
sınıfını FileStream kullanarak dosya sistemindeki dosyaları okuyabilir, yazabilirsiniz, açabilir ve kapatabilirsiniz. Ayrıca kanallar, standart giriş ve standart çıkış gibi dosyayla ilgili diğer işletim sistemi tanıtıcılarını işleyebilirsiniz. Zaman uyumlu işlemler gerçekleştirmek için , , ve Flush yöntemlerini veya ReadAsynczaman uyumsuz işlemler gerçekleştirmek için , WriteAsync, CopyToAsyncve FlushAsync yöntemlerini kullanabilirsinizRead. CopyToWrite Ana iş parçacığını engellemeden yoğun kaynak kullanan dosya işlemleri gerçekleştirmek için zaman uyumsuz yöntemleri kullanın. Zaman alan bir akış işleminin ui iş parçacığını engelleyebildiği ve uygulamanızın çalışmıyor gibi görünmesini sağlayabildiği bir Windows 8.x Store uygulamasında veya masaüstü uygulamasında bu performansla ilgili dikkat edilmesi gerekenler özellikle önemlidir. FileStream daha iyi performans için giriş ve çıkışı arabelleğe alır.
Önemli
Bu tür arabirimini IDisposable uygular. Türünü kullanmayı bitirdiğinizde, doğrudan veya dolaylı olarak atmalısınız. Türü doğrudan atmak için yöntemini bir try
/catch
blok içinde çağırın.Dispose Bunu dolaylı olarak atmak için (C#'de) veya Using
(Visual Basic'te) gibi using
bir dil yapısı kullanın. Daha fazla bilgi için arabirim konusunun "IDisposable Uygulayan Bir Nesne Kullanma" bölümüne IDisposable bakın.
özelliği, IsAsync dosya tanıtıcısının zaman uyumsuz olarak açılıp açılmadığını algılar. , veya options
parametresi olan bir oluşturucu useAsync
isAsync
kullanarak sınıfın FileStream bir örneğini oluştururken bu değeri belirtirsiniz. özelliği olduğunda true
, akış zaman uyumsuz olarak dosya işlemleri gerçekleştirmek için çakışan G/Ç kullanır. Ancak, özelliğinin IsAsync , WriteAsyncveya CopyToAsync yöntemini çağırması ReadAsyncgerekmeztrue
. IsAsync özelliği olduğunda false
ve zaman uyumsuz okuma ve yazma işlemlerini çağırdığınızda, UI iş parçacığı yine de engellenmez, ancak gerçek G/Ç işlemi zaman uyumlu olarak gerçekleştirilir.
yöntemi dosyalara Seek rastgele erişimi destekler. Seek okuma/yazma konumunun dosya içindeki herhangi bir konuma taşınmasını sağlar. Bu, bayt uzaklığı başvuru noktası parametreleriyle yapılır. Bayt uzaklığı, numaralandırmanın üç üyesi SeekOrigin tarafından gösterildiği gibi temel alınan dosyanın başlangıcı, geçerli konumu veya sonu olabilecek arama başvuru noktasına göredir.
Not
Disk dosyaları her zaman rastgele erişimi destekler. Oluşturma sırasında özellik değeri, CanSeek temel alınan dosya türüne true
göre veya false
olarak ayarlanır. Temel alınan dosya türü winbase.h dosyasında tanımlandığı gibi FILE_TYPE_DISK ise, CanSeek özellik değeri olur true
. Aksi takdirde özellik CanSeek değeri şeklindedir false
.
Bir işlem dosyanın bir bölümü kilitli olarak sonlandırılırsa veya bekleyen kilitleri olan bir dosyayı kapatırsa, davranış tanımlanmamış olur.
Dizin işlemleri ve diğer dosya işlemleri için bkz File. , Directoryve Path sınıfları. File sınıfı, öncelikle dosya yollarını temel alan nesnelerin oluşturulması için statik yöntemleri olan FileStream bir yardımcı program sınıfıdır. sınıfı bayt MemoryStream dizisinden bir akış oluşturur ve sınıfına FileStream benzer.
Yaygın dosya ve dizin işlemlerinin listesi için bkz . Ortak G/Ç Görevleri.
Akış konumu değişikliklerini algılama
Nesnenin FileStream tanıtıcısında özel bir ayrı tutma olmadığında, başka bir iş parçacığı dosya tanıtıcısına eşzamanlı olarak erişebilir ve işletim sisteminin dosya tanıtıcısıyla ilişkili dosya işaretçisinin konumunu değiştirebilir. Bu durumda nesnedeki FileStream önbelleğe alınan konum ve arabellekteki önbelleğe alınan veriler tehlikeye girebilir. nesnesi, FileStream işletim sisteminin tanıtıcı konumunun nesne tarafından kullanılan önbelleğe alınmış konumla FileStream aynı olduğundan emin olmak için önbelleğe alınmış arabelleğe erişen yöntemler üzerinde düzenli olarak denetimler gerçekleştirir.
Yöntemine yapılan çağrıda Read tanıtıcı konumunda beklenmeyen bir değişiklik algılanırsa, .NET arabelleğin içeriğini atar ve dosyadan akışı yeniden okur. Bu, dosyanın boyutuna ve dosya akışının konumunu etkileyebilecek diğer işlemlere bağlı olarak performansı etkileyebilir.
Yöntemine yapılan çağrıda Write tanıtıcı konumunda beklenmeyen bir değişiklik algılanırsa, arabelleğin içeriği atılır ve bir IOException özel durum oluşturulur.
FileStream Tanıtıcıyı kullanıma sunma özelliğine erişildiğinde veya FileStream nesnesine SafeFileHandle oluşturucusunda özelliği verildiğinde SafeFileHandle nesnenin tanıtıcısında özel bir ayrı tutma olmaz.