2

好的,我在问这个问题之前已经考虑过了,因为起初它听起来确实像是一个古老的问题,归结为“是否可以在档案中写入”。我是 Mac OS X 的新手,但我读过应用程序只是一个带有.app扩展名和特定文件结构的文件夹。所以,我想知道是否可以在这个文件夹中写入,如果可以的话如何。

我问的原因是因为在我的 Java 程序中,在 Windows 上,它读取程序目录中的一些文件(程序文件的原理)但在 OSX 应用程序上似乎没有创建任何文件(很明显) - 所以我猜他们必须将它们存储在.app文件夹中!如果我假设错了,我想知道应用程序通常在哪里存储他们创建的文件。

提前致谢

编辑我问这个问题的全部原因是因为如果我的应用程序留下文件,我害怕负面反馈,所以我真的需要信息丰富的意见。简而言之,我的应用程序需要一个配置文件,但它也允许用户创建自己的“数据库”。我现在认为我会将这些文件存储在用户的文档文件夹中,但我不确定在删除应用程序时是否应该删除这些文件或只是保留它们。显然,删除它们需要我制作一个包——这对用户来说只是一个额外的步骤,所以你怎么看?...哦,是的,应用程序会在用户输入有效的序列密钥时生成一个许可证文件- 在 Windows 上,信息存储在注册表中,但在 Mac 上,我不确定将包含此信息的文件放在哪里!任何帮助将非常感激。

4

2 回答 2

4

您不应该写入应用程序包。一些没有特定顺序的原因:

  • 用户可能没有写入权限。事实上,应用程序包可以在只读媒体上。

  • 应用程序包不是特定于用户的。它很可能位于共享位置并由系统上的所有用户使用。

  • 应用程序应进行代码签名,修改其内部可能会使签名无效。

放置用户数据的适当位置是在用户的 Documents 文件夹中,在 ~/Library/Application Support 的产品特定子目录中(或者,如果它应该是系统范围的,/Library/Application Support),或者在某个位置用户选择的。

如果用户删除应用程序,我不会太担心留下文件。这是很常见的,甚至是可取的。例如,如果我在安装新版本之前删除了旧版本,我希望新版本能够找到旧版本遗留下来的现有文件。如果您遵循典型的约定,用户将知道如何清理(或者像 AppZapper 之类的东西将能够为他们这样做)。

于 2012-04-15T10:08:54.910 回答
2

我正在自己寻找这个问题的答案,但我想我可以帮助你解决你的问题。我自己移植了一个“windows”java应用程序。我不是真正的 Mac 专家,但我对这个主题的研究给了我以下答案:

我将 *.app 文件夹理解为您的程序的安装包。此文件夹的内部结构不会向用户显示。对他来说,这只是应用程序。一个快速的谷歌搜索给了我以下提示:

http://developer.apple.com/library/mac/#qa/qa1170/_index.html

将应用程序数据和临时文件放在 mac 上的位置

也许这有帮助

于 2012-04-13T07:45:07.650 回答