写入从 getResourceAsStream() 返回的文件流

2022-09-01 18:42:17

我正在从中得到一个a,并且我设法通过将返回的传递给.InputStreamgetResourceAsStream()InputStreamBufferedReader

有什么方法可以写入文件吗?


答案 1

不直接,否 - 旨在返回对只读资源的视图。getResourceAsStream()

但是,如果您知道资源是可写文件,则可以跳过一些箍,例如

URL resourceUrl = getClass().getResource(path);
File file = new File(resourceUrl.toURI());
OutputStream output = new FileOutputStream(file);

这应该在unix风格的系统上很好地工作,但是Windows文件路径可能会造成这种消化不良。尝试一下并发现,但是,您可能没问题。


答案 2

有什么方法可以写入文件吗?

谁说这是一个文件?关键是要把它抽象出来,因为它很可能不是真的。具体来说,资源可能位于JAR文件中,可以从HTTP服务器读取,或者实际上是实现者可以想象的任何东西。getResourceAsStream()ClassLoader

你真的不应该写到一个资源,这是你的程序分发的一部分。在大多数情况下,从概念上讲,这是错误的做法。设置或特定于用户的数据应转到首选项 API 或用户的主目录。