当前位置: 首页 > 面试题库 >

使用Java在Mac应用程序包/文件夹中编写

南门建章
2023-03-14
问题内容

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

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

提前致谢

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


问题答案:

您不应该写应用程序捆绑包。原因不分先后:

  • 用户可能没有写权限。实际上,该应用程序捆绑包可以位于只读媒体上。

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

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

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

如果用户删除该应用程序,我不会太担心将文件留在后面。这很普遍,甚至是可取的。例如,如果我在安装新版本之前删除了旧版本,则希望新版本查找旧版本剩余的现有文件。如果遵循典型的约定,则用户将知道如何清理(或类似AppZapper的清理清理)。



 类似资料:
  • 问题内容: 我已经研究了一段时间了,但是还没有一个明确的答案。我正在编写一个Mac OSX应用程序,最终打算将其放置在应用程序商店中,尽管我将能够在Objective- C中编写大多数应用程序,但是我确实需要从仅在Java中可用的库中调用方法。我有两个问题: 根据我的阅读,似乎JNI(使用Invocation API)是执行此操作的唯一可接受的方法(即使Apple在Mac应用程序中已弃用Java,

  • 通过使用android 11(SDK API 30)设备下面的一些方法 但在Android11中运行良好。无法使用如下所示的方法使其im 函数调用 uri是我从拾取器的响应中获得的视频路径。 copyFile的函数调用 错误:new ;path:/storage/emulated/0/download/stop/mp4_20210128225711.mp4 system.err:java.io.f

  • 我在公用文件夹中有一个javascript文件,我想将该文件导入src/components文件夹中的组件。 但我不能在我的组件中做这样的事情: 因为我得到了以下错误: 找不到模块:您试图导入项目src/目录之外的.../.../public/recorder。不支持src/之外的相对导入。您可以将其移动到src/中,也可以从项目的node_modules/中添加符号链接。 据我所知,它不允许在

  • 我正在尝试使用EnvironmentPostProcessor,以便将一些docker秘密加载到应用程序属性中。 我有一个带有spring.factors文件的META-INF文件夹来绑定EnvironmentPostProcessor实现,META-INF文件夹位于main/java/META-INF下。 我遇到的问题是,当我使用maven install/maven包时,META-INF文件夹

  • 问题内容: 我已经使用Netbeans开发了Java桌面应用程序。在我的应用程序中,我使用了一些属性文件,并将其放置在Project文件夹下,以便可以使用类似的代码来访问它 但是,当我将应用程序部署并打包到.jar文件时,我找不到属性文件在哪里,并且我的应用程序无法从属性文件读取值。 我该如何解决该错误,我应该在哪里放置我的属性文件并将其加载? 问题答案: 将其放在下面,然后按如下所示使用它。 N