[英]Where is user-private temporary storage on various platforms?
我需要创建一个充满数据文件的目录。 这些文件是临时的、用户私有的文件。
虽然这些文件是临时文件,如果它们被系统删除也没关系,但它们有很多,如果可以的话我想重新使用它们。 此外,我希望其他应用程序(以同一用户身份运行)也能访问/创建这些文件。 这意味着我需要一个适用于不同编程语言的标准协议。
因为我知道有人会建议它,所以我不想使用 '/tmp' 或 '%TEMP% 或 java 系统属性java.io.tmpdir
。 这些目录是系统范围的。 我也非常有兴趣寻找平台标准或平台批准的方法,而不是仅仅找到一个有效的解决方案。
我正在尝试收集一份列表,列出在不同平台上可以找到这些文件的位置。 以下是我到目前为止所拥有的,但我真的很感激额外的平台和/或对我已经发现的内容的验证。
在 Mac OS X 上,您有几个选择:
$TMPDIR
实际上是用户范围的。 它是 /var/folders 中的一个目录,但是。 在那里,有一个特定于用户的目录层次结构。 $TMPDIR
指向的特定目录不允许除用户以外的任何人读取。 这就是 Cocoa function NSTemporaryDirectory()
返回的内容。
您也可以使用 ~/Library/Caches/CompanyOrProductName。 系统不会自动清除它,但它不会包含在 Time Machine 备份中,用户可以随意对其进行核对。
您不应使用 ~/Library/CompanyName。 也许您正在考虑 ~/Library/Application Support/CompanyName? 这可能是合适的,但通常不适用于临时的东西。
/tmp/.<username>-<company>/
中并更改目录权限以保护它。/var/tmp/.<username>-<company>/
或~/.<company>
~/.<company>/
。 当然, .username-company
和.company
只是建议。 您可以使用任何不会与其他应用程序和用户冲突的名称。
~/.<company>
是迄今为止最常见的选择,例如~/.mozilla
、 ~/.openoffice.org
、 ~/.adobe
、 ~/.mysql
、 ~/.netbeans
、 ~/.thunderbird
、 ~/.VirtualBox
之类的。
在任何情况下,在 Solaris 和可能大多数其他类似 Unix 和 Unix 的系统上,除了主目录/tmp
和/var/tmp
之外,没有标准定义的其他用户可写目录。
这是我找到的最好的列表。 如果您有任何更正/建议,请告诉我。
在 Windows 上:
在“本地应用程序数据”目录中创建目录“CompanyName”。 通过以下方式查找:
LOCALAPPDATA
,或通过执行以下命令行查询注册表:
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Local AppData
在 MacOSX 上:
$TMPDIR
或 Cocoa function NSTemporaryDirectory()
mkdir -m 700 ~/Library/Caches/CompanyOrProductName
mkdir -m 700 ~/Library/Application Support/CompanyOrProductName
在 Linux 上:
mkdir -m 700 ~/.company-name
在 Solaris/OpenSolaris 上:
参考:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.