以前,当我在 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
表示输入流,因此不适合作为输出。您无法写入Inputstream
。 getResourceAsStream
返回用于读取资源的流,而不是写入资源。
恐怕没有简单的方法可以写入通过ClassLoader
加载的资源。一种解决方案是将其读作 Properties
,然后使用store
方法将其写入资源文件,通过其他方式获取输出流。您可以使用类加载器获取资源文件的 URI,但不能保证您可以直接写入它(例如,如果它捆绑在签名的 jar 中)。
关于java - java中的FileWriter和InputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3238232/