2012-04-27 3 views
6

В настоящее время разработка приложения # WinForms C в Visual Studio 2010 .NET 4 на Windows 7.System.IO.WriteAllBytes - Доступ к пути запрещен ошибке

Во-первых, я читаю поток байт из файла с помощью файла. ReadAllBytes(). Затем, когда вы пытаетесь записать файл обратно, я получаю доступ к ошибке отклонения пути при использовании метода WriteAllBytes.

Я пробовал проходить по буквальным дорожкам, Environment.SpecialFolder.ApplicationData, Path.GetTempPath(), но все они дают мне ту же ошибку.

Я проверил разрешения на эти папки, а также попытался запустить программу в режиме администратора без везения.

+2

Можете ли вы разместить свой код? –

ответ

1

Вы уверены, что файл еще не заблокирован? Если вы планируете читать + писать байты из файла, вам может потребоваться использовать класс Stream (например, FileStream), преимущество в том, что вы заблокируете файл и что ни одно другое приложение не может получить доступ к файлу за это время ,

пример

код из this topic:

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

Заблокированный файл создает совершенно другое исключение. –

+0

Вы правы, это дает System.IO.IOException, если файл заблокирован. – Styxxy

1

В windows7 есть вопросы безопасности на C :. Если вы изменили путь к D: тогда не будет отказано в доступе.

Попробуйте выполнить пример кода с Path.GetTempPath(), он будет успешно выполнен.

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 содержит имя папки, а не обеспечивает полный путь к этой папке. поэтому, когда вы используете это в пути, определенном для записи файла, эту папку ищут в локальном пути приложения.

+0

Эта ошибка не является исключительной для c :, iv испытала ее на всех моих дисках в окнах 10. – ShadowKras

1

Убедитесь, что вы указали весь путь при использовании File.WriteAllBytes(), включая имя файла.

File.WriteAllBytes() не может писать в общий каталог, он должен записываться в определенный файл.

Надеюсь, это поможет.

Смежные вопросы