各种平台上的用户私有临时存储在哪里?

时间:2012-04-08 04:37:11

标签: windows linux macos solaris

我需要创建一个充满数据文件的目录。这些文件是临时的,用户私有文件。

虽然这些文件是临时的,如果它们被系统删除就可以了,但是有很多文件,我想要 如果可以,重复使用它们。此外,我希望其他应用程序(作为同一用户运行)也可以访问/创建这些文件。这意味着我需要一种适用于不同编程语言的标准协议。

由于我知道有人会建议,我不想使用'/ tmp'或'%TEMP%或java系统属性java.io.tmpdir。 这些目录是系统范围的。我也非常有兴趣找到平台标准或平台认可的方法,而不仅仅是找到有效的解决方案。

我正在尝试收集各种平台的位置列表。以下是我到目前为止的内容,但我非常感谢其他平台和/或对我已经找到的内容的验证。

3 个答案:

答案 0 :(得分:2)

在Mac OS X上,您有几个选择:

$TMPDIR实际上是用户范围的。它是/ var / folders中的目录但是。在那里,有一个特定于用户的目录层次结构。 $TMPDIR指向的特定目录不允许除了用户之外的任何人阅读。这就是Cocoa函数NSTemporaryDirectory()返回的内容。

您还可以使用〜/ Library / Caches / CompanyOrProductName。系统不会自动清除它,但它不会包含在Time Machine备份中,用户可以随意对其进行核对。

您不应该使用〜/ Library / CompanyName。也许你在考虑〜/ Library / Application Support / CompanyName?这可能是合适的,但通常不适用于临时性的东西。

答案 1 :(得分:2)

  • 如果您正在运行Solaris并且不介意在操作系统重新启动时丢失这些文件,则可以将文件存储在/tmp/.<username>-<company>/中并更改目录权限以保护它。
  • 如果您希望这些临时文件在重新启动后继续存在,请使用/var/tmp/.<username>-<company>/~/.<company>
  • 如果远程安装并在各种计算机之间共享用户的主目录,并且您希望以相同的方式共享临时文件,则可以使用~/.<company>/

当然,.username-company.company只是建议。您可以使用任何不会与其他应用程序和用户冲突的名称。

~/.<company>是目前最常见的选择,例如~/.mozilla~/.openoffice.org~/.adobe~/.mysql~/.netbeans,{ {1}},~/.thunderbird等等。

无论如何,在Solaris和大多数其他Unix和Unix类系统上,标准定义的其他用户可写目录没有主目录~/.VirtualBox/tmp

答案 2 :(得分:0)

这是我发现的最佳列表。如果您有任何更正/建议,请告诉我。

在Windows上:

  1. 创建目录&#34; CompanyName&#34;在&#34;本地应用数据&#34;目录。通过以下方式找到:

    1. 系统环境变量LOCALAPPDATA
    2. 通过执行以下命令行来查询注册表:

      reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Local AppData
      
  2. 在MacOSX上:

    1. $TMPDIR或Cocoa函数NSTemporaryDirectory()
      • 每三天自动清除
    2. mkdir -m 700 ~/Library/Caches/CompanyOrProductName
      • 系统不会自动删除(对我的用例来说很好)
      • 未由TimeMachine备份
    3. mkdir -m 700 ~/Library/Application Support/CompanyOrProductName
      • 系统不会自动删除(对我的用例来说很好)
      • 由TimeMachine备份
    4. 在Linux上:

      1. mkdir -m 700 ~/.company-name
      2. 在Solaris / OpenSolaris上:

        1. 参考文献:

          • Cocoa with Love解释了上面的三个MacOSX选项,并讨论了几个安全问题。