2012-04-27 104 views
6

Actualmente el desarrollo de una aplicación de Windows Forms # C en Visual Studio 2010 .NET 4 en Windows 7.System.IO.WriteAllBytes - El acceso a la ruta de error negado

En primer lugar estoy leyendo un flujo de bytes de un archivo usando el archivo. Método ReadAllBytes() Luego, cuando intento volver a escribir el archivo, recibo un acceso al error de denegación de ruta cuando uso el método WriteAllBytes.

He intentado pasar en rutas de acceso literales, Environment.SpecialFolder.ApplicationData, Path.GetTempPath(), pero todas me proporcionan el mismo error.

He comprobado los permisos en estas carpetas y también intenté iniciar el programa en modo administrador sin suerte.

+2

¿Puedes publicar tu código? –

Respuesta

1

¿Está seguro de que el archivo no está bloqueado? Si planea leer + escribir bytes desde un archivo, puede considerar usar una clase Stream (por ejemplo, FileStream), la ventaja es que bloqueará el archivo y que ninguna otra aplicación podrá acceder al archivo mientras tanto. .

ejemplo

Código de this topic:

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

Un archivo bloqueado produce una excepción completamente diferente. –

+0

Tiene razón, le da a System.IO.IOException si el archivo está bloqueado. – Styxxy

1

En Windows7 hay problemas de seguridad en C :. Si modificó la ruta a D: entonces no habrá problemas de acceso denegado.

Pruebe seguir el código de ejemplo con Path.GetTempPath(), se ejecutará correctamente.

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 proporciona el nombre de la carpeta, no proporciona la ruta completa a la carpeta. por lo tanto, cuando usa esto en la ruta definida para escribir archivo, esta carpeta se busca en la ruta de la aplicación local.

+0

Este error no es exclusivo de c :, iv lo experimenté en todas mis unidades en Windows 10. – ShadowKras

1

Asegúrese de especificar la ruta completa al usar File.WriteAllBytes() incluyendo el nombre del archivo.

File.WriteAllBytes() no puede escribir en un directorio general, tiene que escribir en un archivo específico.

Espero que esto ayude.

Cuestiones relacionadas