应用程序应该在哪里保存工作文件?

应用程序应该在哪里保存工作文件?

我正在设计一个可处理扫描文档的 GUI 应用程序。它允许在保存/导出之前对扫描进行操作,因此需要在处理时临时存储每个扫描页面的数据。

数据量相当大(即使压缩也通常超过 100MB),因此将其存储在内存中是不切实际的。扫描大量页面也是一项繁重的工作,因此扫描结果应保存在磁盘上的“工作区域”中,这样​​即使在重新启动系统后也可以重新打开应用程序,并且先前扫描的数据将准备好继续处理。

我不太确定应该在哪里保存这个重要但临时的数据:

  • /tmp/不好,因为退出并重新打开应用程序后数据应该保留,甚至重新启动后仍然保留。
  • $HOME/.config/appname/并不真正正确,因为它不是我保存的配置数据。
  • $HOME/.local/share/不正确,因为XDG规格说这是为了覆盖存储在中的图标之类的东西/usr/share/,并且永远不会放入“全局”扫描/usr/share/
  • $HOME/.cache很接近,但这不是缓存数据,如果在扫描 100 页后它被删除并且必须重新扫描所有内容,用户会感到非常恼火。
  • $HOME/.local/lib/appname没有出现在任何规范中,但如果.local意味着用户本地(lib来自/var/lib/使用),则可能没问题。如果它意味着机器本地,那么它不太合适,因为用户应该能够使用以下命令登录到机器高速扫描仪,使用此应用程序进行扫描,注销,然后在普通 PC 上登录并打开应用程序以查看他们刚刚扫描的内容 - 即,数据应在注销时通过网络保留,并且~$HOME/.cache不需要在机器之间共享,所以$HOME/.local也可能不是 - 我不确定。

那么对于存储此类数据最合适的位置有什么建议吗?

编辑:只是为了澄清,这是每个用户的数据,并且应用程序作为普通用户运行,因此将其放入/var/可能是不正确的,因为然后您必须处理运行该应用程序的多个用户,除了没有写入的普通用户之外访问那里。

答案1

我有一个 GUI 应用程序(使用 wxPython),它从其他地方导入数据,然后处理两到七个数据文件以生成 CSV 文件、PDF 报告以及(如果选择)许多其他报告格式。我将源数据文件(直到存档)和报告存储在 $HOME/Documents 的目录结构中。这很有效,但你必须向用户强调,当他们创建目录名称时,要让他们敏感,而不是给出诸如 qwerty、fred1、abc123 等名称。

答案2

我用来在opt我的应用程序名称下创建一个子目录,并在该子目录下放置我的应用程序使用的临时文件和辅助文件。

相关内容