我从InputStream
获得了一个getResourceAsStream()
,我设法通过将返回的InputStream
传递给BufferedReader
来从文件中读取。
我有没有办法写这个文件?
答案 0 :(得分:32)
不直接,不 - getResourceAsStream()
旨在返回只读资源的视图。
但是,如果您知道该资源是可写文件,则可以跳过一些环节,例如
URL resourceUrl = getClass().getResource(path);
File file = new File(resourceUrl.toURI());
OutputStream output = new FileOutputStream(file);
这应该可以在unix风格的系统上很好地工作,但是Windows文件路径可能会导致这种消化不良。试试看,但你可能会没事。
答案 1 :(得分:10)
我有什么方法可以写信给 文件也是?
谁说这是档案? getResourceAsStream()
的重点在于抽象它,因为它可能不是真的。具体来说,资源可能位于JAR文件中,可能是从HTTP服务器读取的,或者是ClassLoader
实现者可以想象的任何内容。
你真的不应该想要来写一个属于你的程序发行版的资源。在大多数情况下,这在概念上是错误的。设置或用户特定数据应该转到Preferences API或用户的主目录。