2009-08-07 30 views

Respuesta

33

Si está utilizando .NET TEMP, por favor utilice Path.GetTempPath(). Esto garantizará que use el directorio temporal asignado al usuario que ejecuta su aplicación, independientemente de dónde esté almacenada.

Si navega con el sistema de archivos, se dará cuenta de que hay muchos directorios "temp":

  • ~ \ Temp
  • ~ \ Windows \ Temp
  • ~ \ Users \ nombre de usuario \ AppData \ Local \ Temp

... y muchos más. Algunas de estas rutas dependen del sistema operativo y no estarán presentes en ciertas características de Windows. Por lo tanto, ahórrese tiempo y problemas, y deje que el .NET Framework descubra dónde se encuentra la ruta "temporal".

+1

Eso - o use un almacenamiento aislado, al cual el usuario siempre tiene garantizado el acceso de escritura. –

+3

Mejor aún, simplemente use Path.GetTempFileName() que también generará el nombre del archivo y le devolverá la ruta completa (en la carpeta temp correspondiente). –

6

¿En el directorio temp?

Uso GetTempPath o en un archivo por lotes%%

4

C: \ Temp no es una buena opción.

Si está utilizando código de uso .Net así:

  string baseFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 

     string cfgFolder = Path.Combine(baseFolder, "MyAppName"); 


     try 
     { 
      if (!Directory.Exists(cfgFolder)) 
      { 
       Directory.CreateDirectory(cfgFolder); 
      } 
     } 
     catch { } // If no access, not much we can do. 

para conseguir un lugar para el almacenamiento a medio plazo de datos de aplicaciones, o Path.GetTempPath() para el almacenamiento transitorio de los datos.

+0

¿Por qué no es una buena idea usar 'c: \ Temp'? No estoy en desacuerdo con su punto, solo tengo curiosidad sobre su razonamiento =) –

+2

C: \ podría ser una partición realmente pequeña, y en muchos casos, los usuarios normales (que no son administradores) no tienen permisos de escritura en C: \ para que no puedan crear C: \ temp –

+0

Además, ¿quién puede decir que C: \ temp existe incluso en Windows que no es inglés? –

10

Use GetTempPath y posiblemente GetTempFileName para determinar dónde colocar sus archivos temporales. Esta es la manera más confiable, compatible con el usuario final y el futuro para obtener una ubicación temporal para los archivos.

3

Depende del idioma que está utilizando:

string tempFolder = System.IO.Path.GetTempPath(); 

le devuelva la carpeta correspondiente en C#, por ejemplo.

o, las variables de entorno TEMP o TMP si es necesario.

-3

C: \ Documents and Settings \ username \ Application Data \ IsolatedStorage

+16

Sí, pero utilice la API de almacenamiento aislado documentada y no codifique esta ruta.En un sistema con una versión alemana de Windows, esto sería, p. "C: \ Dokumente \ ....." y si codifica esta ruta, su aplicación se romperá. FOLKS: ¡SI HAY ALGUNAS API PARA HACER ALGO, ** ÚSALAS **! –

Cuestiones relacionadas