如您所知,在 Windows 中,大多数应用程序的用户文件都存储在 AppData/Roaming 中。我对 MacOS 和 Linux 几乎没有经验,但我认为有类似的文件夹。
这不仅适用于 Java 应用程序开发,而且我相信一旦我们启动应用程序,它应该做的第一件事是检查 AppData/Roaming 是否存在其子文件夹,如果没有,则创建它。
问题是:有什么比下面的算法更好的吗?
- 学习操作系统
- 根据操作系统,我们使用用户设置获取文件夹的路径(在 Windows 的情况下为 AppData / Roaming)
- 我们检查子文件夹是否特定于我们正在开发的应用程序。如果有,我们检查是否有访问权限。如果没有,我们创建。
- 使用子文件夹文件。
也许Spring有一些合适的库?
在我的例子中,应用程序写入一个子文件夹
Tomcat aplication server,因为它是一个。该算法与您的相似。我看不出这个算法有什么问题。
通常,写入以下文件夹之一是有意义的:
如果您计划在其他应用程序中进一步处理这些文件,则:
Spring,据我所知,它只提供了用于处理文件的标准 Java 算法的包装器。让我告诉你我的困难案例......
我真诚地希望你永远不需要这个。
根据工作的具体情况,您必须处理 WSVS 5(武装部队的移动系统),这是一个 2.6 内核上的 RedHat linux,除其他外,它实现了强制访问控制。
因此,在这样的环境下,允许应用程序写入文件的目录分别由启动进程的用户名和当前访问级别(特殊重要性/sov.secret/secret/not secret)决定,它看起来像这样:
在这种情况下,应用程序不会在除用户文件夹之外的任何地方写入被认为是一种好的做法,但这是可能的。
而要想在Java中获取访问级别,当然是没有办法的,这里有JNI或者JNA或者Runtime.exec(),需要用它找出进程的秘密标签
回答你的问题:事实上,这是你的算法,只有珍珠母按钮......
ADD:由于 topicstarter 接受了一个可能误导人们的答案,我将其添加到我的答案中
通常,Web 应用程序不应写入 servlet 容器拥有的文件夹。首先,在扩展到多个容器时很难维护,其次,这样会影响这个容器中其他应用程序的完整性。第三,通过正确的软件安装组织,Tomcat 是一个包,而您的应用程序是另一个包,使用您的脚本创建正确的安装和卸载脚本将变得更加困难。这是副手,我真正遇到的事情......