2015-10-21 150 views
0

很确定这应该很容易,但我无法写入文件。没有任何I/O异常抛出。我有一个类似的问题早读书,我尝试了上百种不同的方式,直到无法写入文件 - java

DataInputStream dis = new DataInputStream(reading.class.getResourceAsStream("hello.txt"); BufferedReader input = new BufferedReader(new InputStreamreader(dis));

这个工作!我可以使用扫描仪等从这一点读取。

FileReader,使File file = new File("hello.txt")不管,没有任何工作。当它是一个不正确的文件名时,我甚至无法引发任何错误。

现在我有同样的问题,除了写入文件,但没有平等的 reading.class.getResourceAsStream("hello.txt");做出/输出/流。

有谁知道如何获得“ResourceAsStream”,但作为输出流,/或/有人知道我的问题可能是什么?

我知道很多人在这个网站上有读/写的问题,但没有任何帖子帮助我。 笔记 - 是的,我正在关闭,是的,我正在冲洗,是的,我有代码写入文件。

+1

什么是上下文?你想读取和写入'jar'文件吗? – merlin2011

+0

您可能想要检查此目录的权限。此外,如果文件已经存在,您可能还想检查这个权限。 – Dale

+0

您是否尝试过使用[FileOutputStream](http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html)? 'FileOutputStream outputStream = new FileOutputStream(String file)' – codiacTushki

回答

0

GetResourceAsStream旨在读取已分发的资源(例如属性文件),并与代码一起打包。不能保证它们处于可写模式,例如代码和资源可以分发为jar或jar-inside-a-WAR-inside-an-EAR ...

请参阅Write to a file stream returned from getResourceAsStream()了解更多的讨论和解决方法建议,尽管它不是非常推荐的恕我直言。我认为合理的做法是区分(a)您的不可变代码分发(b)在运行时可编辑的数据......后者可能驻留在不同的计算机上,具有不同的安全/复制/备份策略等。