2012-04-27 10 views
6

Obecnie tworzeniem aplikacji WinForm C# w Visual Studio 2010 .NET 4 na Windows 7.System.IO.WriteAllBytes - dostęp do ścieżki odmowy błędu

Po pierwsze czytam strumień bajtów z pliku przy użyciu pliku. Metoda ReadAllBytes(). Następnie przy próbie zapisu tego pliku uzyskuję dostęp do błędu odmowy dostępu do ścieżki podczas korzystania z metody WriteAllBytes.

Próbowałem przechodzącą w dosłownym ścieżek, Environment.SpecialFolder.ApplicationData, Path.GetTempPath(), ale wszystkie są dostarczenie mi tego samego błędu.

Mam sprawdzone uprawnienia do tych folderów, a także próbowałem uruchomić program w trybie administratora bez powodzenia.

+2

Czy możesz opublikować swój kod? –

Odpowiedz

1

Czy na pewno plik nie jest jeszcze zablokowany? Jeśli zamierzasz odczytać bajty z pliku, możesz rozważyć użycie klasy Stream (na przykład FileStream), zaletą jest to, że zablokujesz plik i że żadna inna aplikacja nie będzie mogła uzyskać dostępu do pliku w międzyczasie. .

przykład

Kod z this topic:

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

Zablokowany plik tworzy zupełnie inny wyjątek. –

+0

Masz rację, daje wyjątek System.IO.IOException, jeśli plik jest zablokowany. – Styxxy

1

W Windows7 istnieją kwestie bezpieczeństwa na dysku C :. Jeśli zmodyfikowałeś ścieżkę do D: wtedy nie będzie problemu z odmową dostępu.

Spróbuj wykonać przykładowy kod za pomocą Path.GetTempPath(), zostanie wykonany pomyślnie.

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); 
     } 
    } 

Environment.SpecialFolder.ApplicationData zapewnia nazwę folderu, nie zapewnia pełną ścieżkę do tego folderu. więc kiedy używasz tego w ścieżce zdefiniowanej do zapisu pliku, ten folder jest przeszukiwany w lokalnej ścieżce aplikacji.

+0

Ten błąd nie dotyczy wyłącznie wersji c :, iv na wszystkich moich dyskach w systemie Windows 10. – ShadowKras

1

Upewnij się, że podałeś całą ścieżkę podczas korzystania z File.WriteAllBytes(), w tym nazwę pliku.

File.WriteAllBytes() nie może pisać w katalogu ogólnym, musi zapisywać do określonego pliku.

Mam nadzieję, że to pomoże.

Powiązane problemy