Pliki tymczasowe - ścieżka

0

Witam,
Napisałem program który w trakcie swojego działania potrzebuje zapisać pliki tymczasowe na dysku. Docelowo zrobiłem tak, że pliki te są zapisywane w miejscu gdzie jest zainstalowany program. U mnie działa, ale... Niestety w windowsie 7 domyślny użytkownik nie jest administratorem i nie może zapisywać w Program Files, a przynajmniej nie pliki z takim rozszerzeniem. Gdzie powinienem to zapisać, aby było prawidłowo(według jakiś tam ogólnych, powszechnie stosowanych zasad)? Skąd wziąć tą ścieżkę - myślałem o katalogu 'aktualnego urzytkownika', jakieś dane lokalne, jednak jak uzyskać ścieżkę do tego miejsca z kodu programu? Co jeżeli ktoś ma winde w innym języku? Tam moje dokumenty nie nazywają się moje dokumenty(itp.).
Proszę o pomoc.

1

Zmienna środowiskowa USERPROFILE zawiera katalog domowy użytkownika.

2

Np. tak:

string ścieżka = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

A jeśli to ma być plik tymczasowy, to:

string ścieżka = Path.GetTempFileName();
0

Dziękuję bardzo za obie odpowiedzi. Chcę się tylko jeszcze upewnić.

W przypadku:

string ścieżka = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

otrzymuję C:\Documents and Settings\NazwaUsera\Ustawienia lokalne\Dane aplikacji
Rozumiem że aby było ładnie, powinienem utworzyć sobie tutaj folder dla mojej aplikacji?

Natomiast:

string ścieżka = Path.GetTempFileName();

Wywołanie tej metody tworzy plik *.tmp w C:\Documents and Settings\NazwaUsera\Ustawienia lokalne\Temp Zaraz po wywołaniu metody mogę się tym plikiem 'bawić'? Zmienić rozszerzenie, coś do niego zapisać? Jak coś do niego zapisać? Zwyczajnie strumieniami?

2
Walery napisał(a)

Rozumiem że aby było ładnie, powinienem utworzyć sobie tutaj folder dla mojej aplikacji?

Tu albo w SpecialFolder.ApplicationData (to będzie działać dla użytkownika, który pracuje na wielu komputerach w ramach sieci).

Zaraz po wywołaniu metody mogę się tym plikiem 'bawić'? Zmienić rozszerzenie, coś do niego zapisać? Jak coś do niego zapisać? Zwyczajnie strumieniami?

Jak najbardziej, ten plik jest po to, byś się nim bawił. ;)
Zmiany nazwy nigdy nie próbowałem (nie miałem takiej potrzeby, w końcu to tylko plik tymczasowy, za chwilę go nie będzie), ale chyba nie powinno być problemu.
Zapis do pliku albo przez strumienie albo przez metody klasy File: WriteAllText, WriteAllLines czy analogiczne z Append na początku nazwy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1