带缓冲的流的工作原理:读取到一个字节/字符,先不输出,等凑足了缓冲的最大容量后一次性写出去,从而提高了工作效率
举个现实生活中的例子:假设你是一个快递员,不带缓冲的流就像快递公司给你一份快递你就跑一次,而带缓冲的流就像快递公司给你一份快递,你先不去,等攒攒多一起送,试想一下,是不是效率提高了?
FileReader和FileWriter都是继承父类的方法。他们本身的类中没有重写父类的任何方法。实际上就是等价于他们的父类outputStreamWriter,inputSteamReader至于它们存在的意义只是为了方便理解,一看就知道是用来写入字符文件的类!!!FileWriter很明显是针对文件的封装PrintWriter则更普遍一点而在写文件时我认为PrintWriterout=newPrintWriter(newBufferedWriter(newFileWriter(filename)))比较好点PrintWriter提供print系方法BufferedWriter提供缓冲,用以加速FileWriter用于写文件FileWriter类/FileReader类:用于对字符文件的读写的便捷的结点流类,使用时最好用BufferedReader/BufferedWriter对其进行包装。PrintStream类(如System.out):格式化打印输出字节数据的流,该类提供的print[ln]()方法可格式化打印输出各种类型的数据(包括类对象),它使用平台的默认字符编码将所有字符都转换为字节打印输出(写入)。在需要写入字符而不是写入字节的情况下,应该使用PrintWriter类。输出内容到文件最好用打印流PrintWriter/PrintStream你那种方法不行
把BufferedWriter改成下面的方法就行了
PrintWriter bfWriter=new PrintWriter(writer)
bfWriter.println(s)
你关流的时候只用关最外层的BufferedWriter和BufferedReader就OK了,里面的字符流,字节流都一并给关掉了!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)