展开全部
书上说的吧,不一定完全对。
的确根据API文档,是能过滤一32313133353236313431303231363533e4b893e5b19e31333339653761些字符,但是这些字符并非完全无用public String readLine() throws IOException
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
返回:
包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
过滤的字符是用于换行的,所以当你在控制台输出读取的文本时,如果包含\r\n字符的就会换行
举例,在windows环境下
源文件如下
可以想象成如下,注意红色字符是换行符,并不显示
然后我们使用java.io进行读取import java.io.BufferedReader;
import java.io.FileReader;
public class Demo {
public static void main(String[] args) throws Exception {
//FileReader读取数据,并输出字符数和文本内容
FileReader fr = new FileReader("c:\\a.txt");
int temp;
StringBuilder sb = new StringBuilder();
while ((temp = fr.read()) != -1) {
sb.append((char)temp);
}
fr.close();
System.out.println("FileReader读取:字符数"+sb.length());
System.out.println(sb.toString());//并没有按一行一行的打印,自动换行了
//BufferedReader读取数据,并输出字符数和文本内容
BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));
String str ;
StringBuilder sb2 = new StringBuilder();
while((str=br.readLine())!=null){
sb2.append(str);
}
br.close();
System.out.println("BufferedReader读取: 字符数"+sb2.length());
System.out.println(sb2.toString());//过滤了换行符,所以输出的话没有换行
}
}
输出效果如图
BufferedReader过滤的就是6个换行用的字符