0

我必须阅读一个文本文件并根据一些逻辑对文件进行一些更改。所以我正在使用逐行读取文件

 while ( (temp_string = inputstream.readLine()) != null )
 {
    /*after employing some other logic*/
    outputstream.write(temp_string);
    outputstream.flush();
}

其中 temp_string 是一个字符串,输入流的声明是:

BufferedReader inputstream  = new BufferedReader(new FileReader(pathtosilentfile)); 

并且声明outputstream是:

BufferedWriter outputstream = new BufferedWriter(new FileWriter(pathtooutputfile));

但是当我写入文本文件(新文件)时,有很多垃圾,在记事本++上显示为 NULL。此外,写入的数据在记事本或写字板中看起来还不错。那么这是某种编码错误吗?我不明白!怎么了?

4

3 回答 3

3

一方面,您正在阅读行而不是写任何换行符。temp_string不包含任何换行符/换行符。尽管这似乎不是您遇到的唯一问题。

于 2012-06-27T18:38:59.243 回答
2

如果您告诉我们是什么,那真的会有所帮助output_stream-但它应该Writer某种描述-可能是OutputStreamWriter包裹在 a 周围FileStream,指定适当的编码(我猜这取决于您)。

如果它在记事本/写字板中看起来不错,但在 Notepad++ 中损坏了,则可能编码问题,但您应该决定使用哪种编码。UTF-8 通常是一个不错的选择(ASCII 紧凑,涵盖整个 Unicode,被广泛支持),但这取决于读取文件的需要。

于 2012-06-27T18:37:59.680 回答
1

开头的负载NULL意味着您​​开始写入文件的中间而不是开头。记事本/写字板简单地忽略这一点,但您的文件将比您想要的大得多,并且在读入其他文件时可能会导致问题。

但是,由于在您开始写作之前我们不知道outputstream它是什么或对它做了什么,我们无法为您提供帮助。

于 2012-06-27T18:43:43.570 回答