2012-04-08 4 views
1

Ich muss ein Verzeichnis voller Datendateien erstellen. Diese Dateien sind temporäre, benutzereigene Dateien.Wo ist benutzerdefinierter temporärer Speicher auf verschiedenen Plattformen?

Während die Dateien vorübergehend sind, und es ist in Ordnung, wenn sie vom System gelöscht werden, gibt es eine Menge von ihnen und ich möchte wiederverwerten, wenn ich kann. Darüber hinaus erwarte ich, dass andere Anwendungen (die als derselbe Benutzer ausgeführt werden) ebenfalls auf diese Dateien zugreifen/sie erstellen. Das heißt, ich brauche ein Standardprotokoll, das über verschiedene Programmiersprachen hinweg funktioniert.

Da ich weiß, dass jemand es vorschlagen wird, möchte ich nicht '/ tmp' oder '% TEMP% oder die Java-Systemeigenschaft java.io.tmpdir verwenden. Diese Verzeichnisse sind System-Bereich. Ich bin auch sehr daran interessiert, plattformstandardisierte oder plattformgeprüfte Methoden zu finden, anstatt nur eine funktionierende Lösung zu finden.

Ich versuche eine Liste zu sammeln, wo diese Dateien für verschiedene Plattformen zu finden sind. Unten ist, was ich bisher habe, aber ich würde wirklich zusätzliche Plattformen und/oder Validierung von dem, was ich bereits gefunden habe, schätzen.

+0

Die Umgebungsvariable% temp% in modernen Windows (ich denke XP SP3 und höher) befindet sich im Verzeichnis "Dokumente und Einstellungen" oder "Benutzer". TEMP und TMP =% USERPROFILE% \ AppData \ Local \ Temp auf den 2 Rechnern, die ich gerade angeschaut habe. – JimR

Antwort

0

Dies ist die beste Liste, die ich gefunden habe. Wenn Sie irgendwelche Korrekturen/Vorschläge haben, lassen Sie es mich bitte wissen.

Unter Windows:

  1. Erstellen Sie ein Verzeichnis "Company" in der "lokalen App-Daten" Verzeichnis. Finden Sie diese über:

    1. Die Systemumgebungsvariable LOCALAPPDATA oder
    2. Abfrage der Registrierung durch Ausführen der folgenden Befehlszeile:

      reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Local AppData 
      

Auf MacOSX:

  1. $TMPDIR oder Kakao Funktion NSTemporaryDirectory()
    • 3 Tage Gelöscht automatisch all
  2. mkdir -m 700 ~/Library/Caches/CompanyOrProductName
    • nicht automatisch vom System entfernt (gut für meinen Anwendungsfall)
    • nicht von Time Machine
  3. gesichert
  4. mkdir -m 700 ~/Library/Application Support/CompanyOrProductName
    • nicht automatisch vom System entfernt (gut für meinen Anwendungsfall)
    • von Time Machine
    • Gesichert

Unter Linux:

  1. mkdir -m 700 ~/.company-name

Unter Solaris/OpenSolaris:

  1. ?

Referenzen:

  • Cocoa with Love erklärt die drei MacOSX oben stehenden Optionen und bespricht auch mehrere Sicherheitsfragen.
2

Unter Mac OS X, Sie haben ein paar Optionen:

$TMPDIR ist eigentlich benutzer scoped. Es ist ein Verzeichnis innerhalb von/var/folders aber. Dort gibt es eine benutzerspezifische Verzeichnishierarchie. Das spezifische Verzeichnis, auf das $TMPDIR zeigt, erlaubt kein Lesen außer dem Benutzer. Dies ist, was die Cocoa-Funktion NSTemporaryDirectory() zurückgibt.

Sie können auch ~/Library/Caches/CompanyOrProductName verwenden. Das System wird das nicht spontan beseitigen, aber es wird nicht in Time Machine-Backups enthalten sein und der Benutzer kann sich frei fühlen, es beliebig zu nuken.

Sie sollten ~/Library/CompanyName nicht verwenden. Vielleicht haben Sie an ~/Library/Application Support/CompanyName gedacht? Das mag angebracht sein, ist aber normalerweise nicht für temporäre Dinge.

2
  • Wenn Sie Solaris läuft und Sie nicht dagegen, diese Dateien verloren werden, wo die OS neu gestartet wird, die Dateien in /tmp/.<username>-<company>/ speichern kann und die Verzeichnisberechtigungen ändern, sie zu schützen.
  • Wenn Sie diese temporären Dateien wollen einen Neustart, um zu überleben, nutzen /var/tmp/.<username>-<company>/ oder ~/.<company>
  • Wenn der Home-Verzeichnisse des Benutzers fern zwischen verschiedenen Maschinen montiert und gemeinsam genutzt und Sie mögen Ihre temporären Dateien auch auf die gleiche Weise geteilt sein, können Sie Verwenden Sie ~/.<company>/.

Natürlich sind .username-company und .company nur Vorschläge. Sie können einen beliebigen Namen verwenden, der nicht mit anderen Anwendungen und Benutzern kollidiert.

~/.<company> ist bei weitem der häufigste Wahl, wie zum Beispiel ~/.mozilla, ~/.openoffice.org, ~/.adobe, ~/.mysql, ~/.netbeans, ~/.thunderbird, ~/.VirtualBox und Ähnliches.

In jedem Fall gibt es unter Solaris und wahrscheinlich den meisten anderen Unix- und Unix-ähnlichen Systemen keine anderen schreibbaren Verzeichnisse, die vom Standard definiert werden, als das Home-Verzeichnis /tmp und /var/tmp.