2009-08-07 12 views

Odpowiedz

33

Jeśli używasz .NET, należy użyć Path.GetTempPath(). Zapewni to korzystanie z katalogu tymczasowego przypisanego do użytkownika, który uruchamia aplikację, niezależnie od tego, gdzie jest przechowywany.

Jeśli przeglądania systemu plików, można zauważyć, że istnieje wiele "Temp" katalogi:

  • ~ \ Temp
  • ~ \ Windows \ Temp
  • ~ \ Users \ nazwa_użytkownika \ AppData \ Lokalne \ Temp

... i wiele innych. Niektóre z tych ścieżek zależą od systemu operacyjnego i nie będą dostępne w niektórych wersjach systemu Windows. Zatem zaoszczędź sobie trochę czasu i kłopotów, a struktura .NET niech zorientuje się, gdzie znajduje się ścieżka "temp".

+1

To - lub użyj izolowanego magazynu, do którego użytkownik ma zawsze zagwarantowany dostęp do zapisu! –

+3

Co więcej, wystarczy użyć ścieżki Path.GetTempFileName(), która wygeneruje również nazwę pliku i zwróci pełną ścieżkę do niego (w odpowiednim folderze temp). –

6

W katalogu temp?

Zastosowanie GetTempPath lub w pliku wsadowym% TEMP%

4

C: \ Temp NIE jest dobrym wyborem.

Jeśli używasz .NET należy użyć kodu jak poniżej:

  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. 

aby uzyskać miejsce dla średnioterminowego przechowywania danych aplikacji lub Path.GetTempPath() do tymczasowego przechowywania danych.

+0

Dlaczego nie jest dobrym pomysłem użycie 'c: \ Temp'? Nie zgadzam się z twoim punktem, jestem po prostu ciekawy co do twojego rozumowania =) –

+2

C: \ może być naprawdę małą partycją, w wielu przypadkach normalni (nie administratorzy) użytkownicy nie mają uprawnień do zapisu C: \, więc nie mogą utworzyć C: \ temp –

+0

Co więcej, kto powiedział, że C: \ temp istnieje nawet w nie-angielskim systemie Windows? –

10

Użyj GetTempPath i ewentualnie GetTempFileName, aby ustalić, gdzie umieścić swoje pliki tymczasowe. Jest to najbardziej niezawodny, przyjazny dla użytkownika i przyszłościowy sposób uzyskania tymczasowej lokalizacji plików.

3

To zależy od języka używanego:

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

powróci odpowiedni folder w C# na przykład.

lub zmienne środowiskowe TEMP lub TMP, jeśli musisz.

-3

C: \ Documents and Settings \ nazwa użytkownika \ Dane aplikacji \ IsolatedStorage

+16

Tak, ale proszę korzystać z udokumentowanego izolowanego interfejsu API pamięci masowej i nie koduj tej ścieżki w bezpieczny sposób!W systemie z niemiecką wersją systemu Windows będzie to np. "C: \ Dokumente \ ....." i jeśli utniesz tę ścieżkę, twoja aplikacja się zepsuje. FOLKS: JEŚLI MASZ API, ABY ZROBIĆ COŚ, ** UŻYWAJ JEJ !! –