java - 使用 Java 编写 Mac 应用程序包/文件夹

标签 java macos file location

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

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

提前致谢

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

最佳答案

您不应该写入应用程序包。一些原因排名不分先后:

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

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

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

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

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

关于java - 使用 Java 编写 Mac 应用程序包/文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10127714/

相关文章:

java - 将输入发送到标准输入并在 Java 中获得完整输出 - Festival TTS

java - 需要帮助创建内部日志文件

c++ - 在文本文件中搜索某个单词 C++

c# Directory.CreateDirectory( path ),我应该先检查路径是否存在吗?

java - Realm 在一个线程中保存数据在另一个线程中获取

java - 使用 HTMLunit 获取 ajax/javascript 内容

objective-c - 如何以编程方式防止 Mac 进入休眠状态?

objective-c - 如何在 Mac OS X 中获取相对于窗口的光标位置?

ajax - 是否可以使用 Google Chrome 打开自定义 URL 方案?

file - JCAMP-DX 数据格式是什么?