java PrintWriter 和 FileWriter的区别

现在学到IO,我是先学了FileWriter,然后学的PrintWriter;但是觉得PrintWriter没有多大优势或特点。
API上说PrintWriter特点:向文本输出流打印对象的格式化表示形式。
我的理解是:PrintWriter可以直接输入对象的字符形式。

但是这功能,FileWriter也可以直接write String啊;
因此,我不知道PrintWriter有什么特点,或者说不知道什么时候该用PrintWriter了

FileReader 和FileWriter都是继承父类的方法。他们本身的类中没有重写父类的任何方法。实际上就是等价于他们的父类outputStreamWriter,inputSteamReader
至于它们存在的意义只是为了方便理解,一看就知道是用来写入字符文件的类!!!
FileWriter 很明显是针对文件的封装
PrintWriter 则更普遍一点
而在写文件时
我认为
PrintWriter out = new PrintWriter(
new BufferedWriter(
new FileWriter(filename)))
比较好点
PrintWriter 提供print系方法
BufferedWriter 提供缓冲,用以加速
FileWriter 用于写文件
FileWriter类/FileReader类:
用于对字符文件的读写的便捷的结点流类,
使用时最好用BufferedReader/BufferedWriter对其进行包装。

PrintStream类(如System.out):
格式化打印输出字节数据的流,该类提供的print[ln]()方法可格式化打印输出各种类型的数据(包括类对象),
它使用平台的默认字符编码将所有字符都转换为字节打印输出(写入)。

在需要写入字符而不是写入字节的情况下,应该使用PrintWriter类。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-09
你的理解是对的,没什么区别,要格式化也可以用 String.format() 。

不过感觉上 println() 打印出来的换行符是根据平台来的,比如 Windows 是 "\r\n" Linux 是 "\n" 。但事实上这个功能也可以用 BufferedWriter.newLine() 来实现。本回答被提问者采纳
第2个回答  2013-12-11
PrintWriter提供的print/println/printf等方法方便使用。
第3个回答  2021-08-22
我先问你个问题,一般Writer和Reader都是成对出现的,例如FileWriter和FileRead,InputStreamReader和OutputStreamWriter,BufferedReader和BufferedWriter等等,为啥只有PrintWriter,没有PrintReader呢?
其一,因为Print这个词,print是打印的意思,它是专注于写,他就像一个打印机一样,无论是写到控制台,还是写到文件,它的任务是写,而不像其他成对出现的一样,一个负责读一个负责写。
其二,它的出现,是真正意义上的实现了跨平台的写一个换行,因为windows换行是\r\n,mac是\r,linux是\n,PrintWrite的println(),可以根据不同平台,自动帮你搞定
其三,BufferedWriter的writeline()也可以实现其二,但是它的构造函数参数是啥呢?是Writer,也就是你使用BufferedWrite,需要传一个Writer接口类型的类,而PrintWriter刚好也是实现了Writer。又回到了我所说的其一,如果是单纯的只是为了写,那么PrintWriter是最方便的,无论写数据,还是写换行,你只需要 new PrintWriter(file or fileName)即可,而不在是new BufferedWriter(new xxxWriter())一层层包装
现在知道区别了吧~
相似回答