2012-04-27 15 views
6

Şu Öncelikle Dosya kullanarak bir dosyadan bayt akışı okuyorum 2010 .NET 4System.IO.WriteAllBytes - yolu inkar hata Erişim

Windows 7'de Visual Studio C# WinForms uygulama geliştirme. ReadAllBytes() yöntemi. Ardından, dosyayı geri yazmaya çalışırken, WriteAllBytes yöntemini kullanırken hata engellenmiş bir yola erişiyorum.

Ben literal yollarda geçirmeyi denedim, Environment.SpecialFolder.ApplicationData, Path.GetTempPath(), ancak hepsi aynı hatayı veriyorlar.

Bu klasörlerdeki izinleri kontrol ettim ve programı yönetici modunda hiç şans olmadan başlatmaya çalıştım.

+2

Kodunuzu gönderir misiniz? –

cevap

1

Dosyanın hala kilitli olmadığından emin misiniz? Bir dosyadan + yazma baytını okumayı planlıyorsanız, bir Stream sınıfı kullanmayı düşünebilirsiniz (örneğin, FileStream), avantajı, dosyayı kilitleyeceğiniz ve bu arada başka hiçbir uygulamanın dosyaya erişemeyeceğidir. . this topic den

Kod örnek: windows7 ise

FileStream fileStream = new FileStream(
    @"c:\words.txt", FileMode.OpenOrCreate, 
    FileAccess.ReadWrite, FileShare.None); 
+0

Kilitli bir dosya tamamen farklı bir istisna oluşturur. –

+0

Haklısınız, dosya kilitli ise bir System.IO.IOException verir. – Styxxy

1

c güvenlik sorunları vardır :. Yolu D olarak değiştirdiyseniz, erişim engellendi sorunu yoktur.

Örnek kodu Path.GetTempPath() ile çalıştırmayı deneyin, başarıyla yürütülür. Environment.SpecialFolder.ApplicationData klasör adını sağlar

static void Main(string[] args) 
    { 
     string path = Path.GetTempPath(); 
     byte[] binaryData; 
     string text = "romil123456"; 
     using (MemoryStream memStream = new MemoryStream(Encoding.ASCII.GetBytes(text))) 
      { 
       binaryData = memStream.ToArray(); 
      } 
      System.IO.File.WriteAllBytes(@path + "\\words123.txt" , binaryData); 
     } 
    } 

, bu klasöre tam yolunu sağlar değil. Bu nedenle, dosyayı yazmak için tanımlanan yol içinde kullandığınızda, bu klasör yerel uygulama yolunun altında aranır.

+0

Bu hata c: 'ye özel değil, Windows 10'daki tüm sürücülerimde bunu deneyimledi. – ShadowKras

1

Dosya adı da dahil olmak üzere File.WriteAllBytes() kullanırken yolun tamamını belirttiğinizden emin olun.

File.WriteAllBytes() Genel dizine yazamaz, belirli bir dosyaya yazmak zorundadır.

Bu yardımcı olur umarım.

İlgili konular