2013-11-21 3 views
39

Я хочу использовать StreamWriter для записи файла во временную папку.Запись файла в папку Temp

Это может быть другой путь на каждом ПК, поэтому я попытался использовать %temp%\SaveFile.txt, но это не сработало.

Как сохранить временную папку с использованием переменных окружения?

И, например, могу ли я использовать переменную окружения для хранения файлов в %appdata%?

ответ

72
+0

ОК, спасибо. Где я могу искать дополнительные переменные среды, такие как основной жесткий диск, пользовательские настройки и приложения? – BlueRay101

+1

Класс System.Environment поможет вам получить переменные среды и так далее. Также не забудьте проверить перечисление System.Environment.SpecialFolder. http://msdn.microsoft.com/en-us/library/system.environment%28v=vs.110%29.aspx – trope

+0

Так что для папки temp мне всегда нужно использовать Path.GetTempPath() ;, и для любого другого специального пути (например, AppData или ProgramFiles) мне нужно использовать System.Environment? – BlueRay101

2

System.IO.Path.GetTempPath()

Путь, указанный в переменной окружения TMP. Путь, заданный переменной окружения TEMP. Путь, указанный переменной среды USERPROFILE. Каталог Windows.

30

Класс Путь очень полезен здесь.
Вы получаете два метода называют

Path.GetTempFileName

Path.GetTempPath

, которые могли бы решить ваш вопрос

Так, например, вы могли бы написать: (если вы не возражаете точное имя файла)

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

Или, если вам необходимо указать имя файла

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

каталог temp изменяется в зависимости от сеанса, используя RDP, я вошел в систему и получил доступ к% TEMP%, он направляет temp/2 later temp/4 ... как получить временную папку (не temp/digit) – asvignesh

+1

Не спрашивайте вопрос в комментарии к трехлетнему ответу.Опубликовать (после обязательного исследования) свой собственный вопрос, указав, в чем здесь отличие – Steve

6

Вы можете динамически получить путь временного, используя в качестве следующего и лучше использовать его вместо того, чтобы использовать жесткий кодированный строковое значение Темпа location.It вернет временную папку или временный файл, как вы хотите.

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

или

Path.GetTempFileName(); 
1

Для% AppData% взглянуть на

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

Могу ли я сохранить его в строковой переменной, поэтому мне не нужно переписывать это каждый раз? – BlueRay101

+0

Конечно, вы можете :) –

+0

Требуется ли какое-либо специальное разрешение для RW .. или стандартный пользователь может также написать в этом каталоге? – asvignesh

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