我必须阅读文本文件并根据某些逻辑对文件进行一些更改。所以我正在使用
逐行读取文件 while ( (temp_string = inputstream.readLine()) != null )
{
/*after employing some other logic*/
outputstream.write(temp_string);
outputstream.flush();
}
其中temp_string是一个String,输入流的声明是:
BufferedReader inputstream = new BufferedReader(new FileReader(pathtosilentfile));
并且outputstream
的声明是:
BufferedWriter outputstream = new BufferedWriter(new FileWriter(pathtooutputfile));
但是当我写入文本文件(新文件)时,会有很多垃圾,在notepad ++上显示为NULL。此外,写入的数据在记事本或wordpad中看起来还不错。这是某种编码错误吗?我不明白!怎么回事?
答案 0 :(得分:3)
首先,你正在读行,而不是写任何换行符。 temp_string
不包含任何换行符/换行符。虽然这似乎不是你遇到的唯一问题。
答案 1 :(得分:2)
如果您告诉我们output_stream
是什么,那真的会有所帮助 - 但 应该是某个描述的Writer
- 可能是{{1}缠绕OutputStreamWriter
,指定适当的编码(我猜这取决于你)。
如果它在Notepad / Wordpad中看起来没问题,但在Notepad ++中坏了,那么它可能 是一个编码问题,但您应该决定使用哪种编码。 UTF-8通常是一个不错的选择(ASCII紧凑,涵盖整个Unicode,广泛支持)但它取决于需要读取文件的内容。
答案 2 :(得分:1)
开头的NULL
加载意味着您开始写入文件的中间而不是开头。记事本/写字板简单地忽略了这一点,但是你的文件会比你想要的要大得多,并且在读入其他文件时可能会出现问题。
但是,由于我们在您开始写作之前不知道outputstream
是什么或者做了什么,我们无法帮助您。