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

时间:2010-05-09 10:42:24

标签: java web-services file-io

我从InputStream获得了一个getResourceAsStream(),我设法通过将返回的InputStream传递给BufferedReader来从文件中读取。

我有没有办法写这个文件?

2 个答案:

答案 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或用户的主目录。