保存源包中的文件
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 EBS 错误:源包为空或超过允许的最大大小:524288000