java中的FileWriter和InputStream

java中的FileWriter和InputStream,java,java-io,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);

以前,当我在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

编辑:

感谢卡萨布兰卡和其他人指出我的错误,请继续:


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

首先,要写流,你需要一个通用的流编写器,而不是文件编写器。其次,写作意味着输出,所以你需要一个输出编写器。所以你要找的课程是

getResourceAsStream
返回一个只能用于读取的
InputStream
,这意味着您只能使用一个类,例如

更新:


使用
FileWriter
,您已经有了添加到文件的正确代码。但是,
getResourceAsStream
返回一个只读资源,因此没有直接的方法将数据写回它。

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


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

如果您阅读文档,您将看到,您的InputStream没有构造函数。这就是我不编译的原因。既然你什么都没问,就这样吧

我可以弄清楚,但我应该使用哪个类来获取用于写入的资源?如果您真的想写入文件,请使用获取资源的URI,然后写入它。+1在我尝试getClass.getClassLoader().FindResource(“/Myfile.txt”)时作进一步解释;再次出现编译错误,比如findResource不存在,这又如何?我的错。事实上,
findResource
是受保护的,您应该改为使用。忘了问一下,我如何获得OutputStream?要用于OutputStreamWriter?感谢您的回答,我应该给OutputStreamWriter什么(显然是OutputStream),从哪里获得它?这个支持追加文件吗?我需要追加文件而不删除原始内容。