保存源包中的文件

Posted

技术标签:

【中文标题】保存源包中的文件【英文标题】:Save File that is in source package 【发布时间】:2010-11-05 03:08:04 【问题描述】:

我正在尝试保存文件目录,以便在我的应用再次打开时记住这些目录。我想将目录保存到我的源代码包中名为“directories.txt”的文件中。

我确实学会了如何阅读它:

getClass().getResourcesAsStream("/getresources/directories.txt")

所以我的问题是如何写入该文件?这可能吗?

谢谢,

nt

【问题讨论】:

重复***.com/questions/4056682/… 【参考方案1】:

这是不可能的。您获取的文件是应用程序类路径中的资源,例如 .class 文件。和类文件一样,它不能被重写到其原始位置(作为 jar、zip 或二进制 .class 文件夹)。它是只读的,不能用于持久性。

要持久化任何数据,您将不得不使用外部资源。您可以写入文件系统中任何路径中的实际文件。该文件将在您的类路径文件之外。

【讨论】:

嗨,米格尔,感谢您提供的信息。我只是假设这是可能的,并认为这将是一个很好的解决方案,不让文件四处游荡。太糟糕了。那就不能正常保存文件了。 @ntmp: 不,你绝对应该那样做。【参考方案2】:

    将用户数据保存在应用程序的安装目录中是根本错误!一台机器上可以有多个用户,即使是同时。他们可能没有(实际上不应该)对应用程序文件有写权限。大约 10 年前,即使在 Windows 上(大约 50 年前在其他地方),“只有一个用户,他拥有整台机器”的思维模型就变得错误了。

    使用Java Preferences API 而不是发明自己的机制。

【讨论】:

【参考方案3】:

在某些情况下是可能的:参见this SO answer。但是,它很复杂,我强烈建议您不要尝试。

有多种特定于操作系统和 Java 标准/首选的方式来存储用户偏好信息。使用它们,不要试图破解 JAR 文件。

【讨论】:

以上是关于保存源包中的文件的主要内容,如果未能解决你的问题,请参考以下文章

Java PrintWriter - 在 NetBeans 中将文件保存到源包

创建应用程序源包AWS Elastic Beanstalk

如何教 Eclipse 在源路径中包含 Maven 源包?

AWS EBS 错误:源包为空或超过允许的最大大小:524288000

上传到 AWS Elastic Beanstalk 时,应用程序源包不起作用

如何添加 NuGet 仅源包依赖项