2013-11-21 9 views
39

Desidero utilizzare StreamWriter per scrivere un file nella cartella temporanea.Scrittura file su cartella temporanea

Potrebbe essere un percorso diverso su ciascun PC, quindi ho provato a utilizzare %temp%\SaveFile.txt ma non ha funzionato.

Come posso salvare nella cartella temporanea, utilizzando le variabili ambientali?

E ad esempio, è possibile utilizzare una variabile ambientale per la memorizzazione di file in %appdata%?

risposta

72
+0

OK, La ringrazio molto. Dove posso cercare più variabili ambientali, come il disco rigido principale, le impostazioni utente e i dati app? – BlueRay101

+1

La classe System.Environment consente di ottenere le variabili di ambiente e così via. Assicurati inoltre di controllare l'enumerazione System.Environment.SpecialFolder. http://msdn.microsoft.com/en-us/library/system.environment%28v=vs.110%29.aspx – trope

+0

Quindi per la cartella temporanea, devo sempre usare Path.GetTempPath() ;, e per qualsiasi altro percorso speciale (come AppData o ProgramFiles) devo usare System.Environment? – BlueRay101

2

System.IO.Path.GetTempPath()

Il percorso specificato dalla variabile ambiente TMP. Il percorso specificato dalla variabile di ambiente TEMP. Il percorso specificato dalla variabile di ambiente USERPROFILE. La directory di Windows.

30

La classe percorso è molto utile qui.
si ottengono due metodi chiamati

Path.GetTempFileName

Path.GetTempPath

che potrebbe risolvere il problema

Così, per esempio si potrebbe scrivere: (se non ti dispiace il nome esatto del file)

using(StreamWriter sw = new StreamWriter(Path.GetTempFileName())) 
{ 
    sw.WriteLine("Your error message"); 
} 

Oppure se è necessario impostare il nome file

string myTempFile = Path.Combine(Path.GetTempPath(), "SaveFile.txt"); 
using(StreamWriter sw = new StreamWriter(myTempFile)) 
{ 
    sw.WriteLine("Your error message"); 
} 
+0

la directory temp cambia in base alla sessione, usando RDP ho effettuato l'accesso e ho raggiunto% TEMP% che indirizza a temp/2 successivo temp/4 ... come ottenere la cartella temporanea (non temp/digit) – asvignesh

+1

Non chiedere a domanda in un commento su una risposta di tre anni.Pubblica (dopo una ricerca obbligatoria) la tua domanda, specificando in cosa è diverso da qui – Steve

6

è possibile recuperare in modo dinamico un percorso temporaneo utilizzando come segue e meglio usarlo invece di utilizzare valore di stringa hardcoded temp location.It restituirà la cartella TEMP o file temporaneo come si desidera.

string filePath = Path.Combine(Path.GetTempPath(),"SaveFile.txt"); 

o

Path.GetTempFileName(); 
1

Per% appdata% un'occhiata al

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 
+0

Posso salvarlo su una variabile stringa, quindi non devo riscriverlo ogni volta? – BlueRay101

+0

Certo che puoi :) –

+0

ha bisogno di un permesso speciale per RW .. o l'utente standard può anche scrivere su quella directory? – asvignesh