java - java中的FileWriter和InputStream

标签 java java-io

以前,当我在 fileWriter 中使用 file 时,它​​可以工作,但现在,由于我使用 getResourceAsStream 而不是 file,我怎样才能使其工作?

FileWriter fstream = new FileWriter(new File("filename"), true);

现在,当我通过

InputStream is = getResourceAsStream("filename");
FileWriter fstream = new FileWriter(is, true);

我必须更改它,因为当我使用 Maven 程序集插件创建可运行的 jar 时,jar 中没有 src/main/resources

编辑:

感谢casablanca等人指出我的错误,请跟进:

我需要写入一个文件,但附加到它,并保留原始内容。当然,我需要知道我正在写入哪个文件。

最佳答案

InputStream 表示输入流,因此不适合作为输出。您无法写入InputstreamgetResourceAsStream 返回用于读取资源的流,而不是写入资源。

恐怕没有简单的方法可以写入通过ClassLoader加载的资源。一种解决方案是将其读作 Properties ,然后使用store方法将其写入资源文件,通过其他方式获取输出流。您可以使用类加载器获取资源文件的 URI,但不能保证您可以直接写入它(例如,如果它捆绑在签名的 jar 中)。

关于java - java中的FileWriter和InputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3238232/

相关文章:

java - 更改登录按钮上的 Facebook Logo 颜色

java.lang.ClassNotFoundException : org. zkoss.zk.ui.http.HttpSessionListener

java - Java 对象的序列化

java - 如何从字符串数组创建 InputStream

java - RandomAccessFile 长度多久更新一次?

java - 为什么 filewriter 不能在 java 中工作?

jvm-arguments - 用于获取 JVM 支持的参数列表的 Java API

java - Floyd-Warshall 算法 - 代表 "infinity"

java - 为每个列表项创建线程

java - 如果读取相同的文本则停止 BufferedReader