2017-06-23 6 views
0

Ich habe eine Windows-Anwendung, die verschiedene Dateien herunterlädt. Ich würde gerne diese Dateien zwischenspeichern, aber ich bin mir nicht sicher, wo ich den Cache ablegen soll. Es sollte im Home-Ordner des Benutzers leben, so dass sie immer Zugriff haben, aber ich denke nicht, dass Ordner wie Documents angemessen sind.Wo sollte ich Anwendungscaches unter Windows speichern?

Das entspricht dem, was ich für MacOS und Linux bin auf der Suche sind:

  • ~/Library/Caches/MyApp
  • ~/.cache/MyApp

Wo sollte Anwendungscache auf Windows gespeichert werden?


Beachten Sie, dass im Gegensatz zu in this question, ich nicht über temporäre Dateien bin zu fragen. Mein Cache sollte über mehrere Sitzungen hinweg wiederverwendet werden.


Beachten Sie, dass ich keine Windows Store App erstelle.

+1

Es gibt keine spezifische Stelle markiert für Cache-Speichern von Daten , AppData ist für anwendungsspezifische Daten für den aktuellen Benutzer (CSIDL_APPDATA) würde ich das verwenden. –

Antwort

1

Benutzerdaten, die nicht roamen müssen, sollten unter CSIDL_LOCAL_APPDATA gespeichert werden. Sie können diesen Pfad abrufen, indem Sie SHGetFolderPath (oder Environment.GetFolderPath in .NET aufrufen). Verwenden Sie CSIDL_APPDATA statt, wenn Sie die Daten benötigen in Domain-Umgebungen zu wandern, aber es ist keine gute Idee, für große Dateien ...

0

Meine letzte Lösung:

public static Path getCacheFolder(final String osName, final FileSystem fs) { 

    Objects.requireNotNull(osName, "osName is null"); 
    Objects.requireNotNull(fs, "fs is null"); 

    // macOS 
    if (osName.toLowerCase().contains("mac")) { 
     return fs.getPath(System.getProperty("user.home"), "Library", "Caches"); 
    } 

    // Linux 
    if (osName.contains("nix") || osName.contains("nux") || osName.contains("aix")) { 
     return fs.getPath(System.getProperty("user.home"), ".cache"); 
    } 

    // Windows 
    if (osName.contains("indows")) { 
     return fs.getPath(System.getenv("LOCALAPPDATA"), "Caches"); 
    } 

    // A reasonable fallback 
    return fs.getPath(System.getProperty("user.home"), "caches"); 
} 
Verwandte Themen