2011-05-17 31 views
12

Hazırlanmış bir FileStream dosyasını kilitli bir dosyaya almanın mümkün olup olmadığını merak ediyorum. Kilitli dosyayı okumaya çalıştığımda artık bir istisna alıyorum.Kilitli dosya ile FileStream

using (FileStream stream = new FileStream("path", FileMode.Open)) 

Teşekkürler!

+0

Gösterdiğiniz satır, kilitli bir dosyayı okumaya çalışmaz, bir dosyayı açmaya çalıştığınız yerdir. Bu dosyayı başka bir yerde mi yaratıyorsunuz? Bir kilit durumu varsa, muhtemelen bu durumu oluşturmak için bir şeyler yapıyorsunuz. Lütfen listelediğiniz tek satırın etrafındaki kodun daha fazlasını gösterin. –

cevap

27

Başka bir kurucuyu denemelisiniz. MSDN'de belgelenmiştir.

Bu bir bahis benzer:

FileStream Constructor (String, FileMode, FileAccess, FileShare) 

MSDN Link

FileAccess

dosya FileStream nesnesi tarafından erişilebilir nasıl oluşturulacağını belirleyen bir sabit. Bu FileStream nesnesinin CanRead ve CanWrite özelliklerini alır. Yol bir disk dosyası belirtirse CanSeek doğrudur.

FileShare

dosya süreçler tarafından paylaşılacaktır nasıl belirleyen bir sabiti. FileShare argüman, FileShare.Read için varsayılan değeri kullanacaktır

+0

Awsome Cevap! Teşekkürler! –

6
using (FileStream stream = new FileStream("path", FileMode.Open)) 

. Hangi reddediyor herhangi bir süreçten dosyaya yazma. Dosyaya başka bir süreç yazılırsa bu işe yaramaz, zaten kazanılmış bir hakkı inkar edemezsiniz.

Sen FileShare.ReadWrite belirtmek gerekir. Diğer işlem FileShare.None kullanıldığında hala işe yaramayabilir, bunun için bir çözüm yok. Yazılmakta olan bir dosyaya okuma erişiminin zahmetli olduğunu unutmayın, güvenilir bir dosya sonu göstergesine sahip değilsiniz. Dosyadaki son kayıt veya satır yalnızca kısmen yazılmıştır.

-1

Sadece dosyayı açmak ve peşine dosyayı okuyabilir. Sadece Sysinternals'dan Handle.exe veya komut satırı seçenekleriyle Unlocker kullanın. Her ikisi de dosyanın kilidini açabilir ve programınızdan çıkmadan kolayca programınızdan çalıştırabilirsiniz. (Ancak bunları Windows SAM dosyası için kullanmayın, SAM ile çalışmaz;)) İyi şanslar!

0

Sana başka bir işlem tarafından da açık durumda iken, ancak değiştirilebilir dosya olarak dikkatli kullanmalıdır çalışır aşağıdaki kullandım.