2009-04-15 2 views
46

У меня есть файл, который мне нужно написать во временном месте, что самое лучшее место в Windows? Этот файл не должен двигаться, поскольку мне нужно его прочитать пару раз и удалять его, когда я закрываю программу.Правильное местоположение для сохранения временного файла в Windows?

ответ

43

использование

Path.GetTempPath(); 

или

Path.GetTempFileName(); 

Как комментатор отметил, GetTempFileName() не поточно - но вы можете создать уникальные имена файлов на основе GUIDs.

+4

Обратите внимание, что GetTenpFileName может необходимо вызвать многократное время из-за присущего состояния расы (что-то другое может создать тот же файл между возвратом из GetTempFileName и открытием файла). – Richard

+0

Вы правы, спасибо за информацию – tanascius

+0

@Richard Вы имеете в виду другое приложение/процесс или другой поток в контексте ** ваше ** приложение? –

7

Используйте функцию Windows API, GetTempPath() из System.IO.Path (см MSDN)

using System.IO 

... 

myTempPath = Path.GetTempPath(); 

Вы должны знать, что файловая система может измениться во время выполнения вашей программы. Любой путь Temp может измениться (маловероятно, предоставлен), или ваш временный файл мог быть перемещен или удален пользователем.

Будьте готовы проверить его существование каждый раз, когда вы обращаетесь к нему и обрабатываете корпус, когда он не найден изящно.

11

Остальные избили меня к нему по поводу

System.IO.Path.GetTempPath() 

Но вы также можете посмотреть в папку данных приложения. Это позволит вам больше контролировать ваш файл, так как у них есть 1 общий доступ для всех пользователей или 1 на пользователя.

Application.CommonAppDataPath 
Application.UserAppDataPath 
0

Если вам нужно приложение для записи во временную папку и работать в режиме частичного доверия, вы должны смотреть в IsolatedStorage.

0

Если вы хотите создать свой собственный пользовательский имя временного файла в ссылке на временную папку, я использовать что-то вроде этого, чтобы сдирать PATH и применять свое собственное имя файла ...

string wsPDFfile = Path.GetTempPath() + wsStudentID + "_" + Path.GetFileNameWithoutExtension(Path.GetTempFileName()) + ".pdf"; 
Смежные вопросы