Java IO(二十) PrintStream 和 DataOutputStream 异同
Java IO(二十) PrintStream 和 DataOutputStream 异同
一、相同点
都是继承与FileOutputStream,用于包装其它输出流。
二、不同点
(一)、PrintStream 和 DataOutputStream 都可以将数据格式化输出;但它们在“输出字符串”时的编码不同。
PrintStream 是输出时采用的是用户指定的编码(创建 PrintStream 时指定的),若没有指定,则采用系统默认的字符编码。而 DataOutputStream 则采用的是UTF-8。
关于 DataOutputStream 的内容,可以参考:Java IO(十一) DataInputStream 和 DataOutputStream
(二)、它们的写入数据时的异常处理机制不同。
DataOutputStream 在通过 write() 向“输出流”中写入数据时,若产生 IOException 异常,会抛出。
而 PrintStream 在通过 write() 向“输出流”中写入数据时,若产生 IOException 异常,则会在 write() 中进行捕获处理;并设置 trouble 标记(用于表示产生了异常)为 true。用户可以通过checkError() 返回 trouble 值,从而检查输出流中是否产生了异常。
(三)、 构造函数不同
DataOutputStream 的构造函数只有一个:DataOutputStream(OutputStream out)。即它只支持以输出流 out 作为 “DataOutputStream 的输出流”。
而 PrintStream 的构造函数较多:和 DataOutputStream 一样,支持以输出流 out 作为 “PrintStream 输出流”的构造函数;还支持以 “File 对象”或者 “String 类型的文件名对象”的构造函数。
而且,在 PrintStream 的构造函数中,能“指定字符集”和“是否支持自动 flush() 操作”。
(四)、目的不同
DataOutputStream 的作用是装饰其它的输出流,它和 DataInputStream 配合使用:允许应用程序以与机器无关的方式从底层输入流中读写java数据类型。
而 PrintStream 的作用虽然也是装饰其他输出流,但是它的目的不是以与机器无关的方式从底层读写java数据类型;而是为其它输出流提供打印各种数据值表示形式,使其它输出流能方便的通过 print() , println() 或 printf() 等输出各种格式的数据。
Java IO(二十) PrintStream 和 DataOutputStream 异同的更多相关文章
- Java IO(十九)PrintStream 和 PrintWriter
Java IO(十九)PrintStream 和 PrintWriter 一.介绍 (一).PrintStream PrintStream 是打印输出流,它继承于FilterOutputStream. ...
- Java IO(十二) 字符流 Writer 和 Reader
Java IO(十二) 字符流 Reader和 Writer 一.介绍 涉及到文件(如果是纯文本文件形式)操作时,Java除了提供 FIle(文件和目录路径名的抽象表示形式) 和 FileDescri ...
- Java IO(十八) BufferedReader 和 BufferedWriter
Java IO(十八) BufferedReader 和 BufferedWriter 一.介绍 BufferedReader 和 BufferedWriter 是字符缓冲流,分别继承自 Reader ...
- Java IO(十六)InputStreamReader 和 InputStreamWriter
Java IO(十六)InputStreamReader 和 InputStreamWriter 一.介绍 InputStreamReader 和 OutputStreamWriter 是字节流通向字 ...
- Java IO(十五)FilterReader 和 FilterWriter、FilterReader 子类 PushBackReader
Java IO(十五)FilterReader 和 FilterWriter.FilterReader 子类PushBackReader 一.介绍 FilterReader 和 FilterWrite ...
- Java IO(十四) CharArrayReader 和 CharArrayWriter
Java IO(十四) CharArrayReader 和 CharArrayWriter 一.介绍 CharArrayReader 和 CharArrayWriter 是字符数组输入流和字符数组输出 ...
- Java IO(十) BufferedInputStream 和 BufferedOutputStream
Java IO(十)BufferedInputStream 和 BufferedOutputStream 一.BufferedInputStream 和 BufferedOutputStream (一 ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- Java笔记(二十八)……IO流下 IO包中其他常用类以及编码表问题
PrintWriter打印流 Writer的子类,既可以接收字符流,也可以接收字节流,还可以接收文件名或者文件对象,非常方便 同时,还可以设置自动刷新以及保持原有格式写入各种文本类型的print方法 ...
随机推荐
- Python(Redis 中 String/List/Hash 类型数据操作)
1.下载 redis 模块 pip install redis 2.redis 数据库两种连接方式 简单连接 decode_responses=True,写入和读取的键值对中的 value 为 str ...
- muduo网络库源码学习————日志类封装
muduo库里面的日志使方法如下 这里定义了一个宏 #define LOG_INFO if (muduo::Logger::logLevel() <= muduo::Logger::INFO) ...
- win7乱码问题解决方法(cmd变小,plsql客户端乱码)
1.点击控制面板:时钟.语言和区域:区域和语言:管理点击更改系统区域设置,选中英语(英国):重启 2.点击控制面板:时钟.语言和区域:区域和语言:管理点击更改系统区域设置,选中中文(简体,中国):重启 ...
- 前端之HTML1
直接上代码: <!DOCTYPE html> <html> <body bgcolor="green"> <h1 align=" ...
- windows脱密码总结
方式1:通过SAM数据库获得本地用户HASH sam文件:是用来存储本地用户账号密码的文件的数据库system文件:里面有对sam文件进行加密和加密的密钥 利用方式: 导出sam和system: re ...
- Java方法重写
重写override 为什么要重写方法呢? 1:当父类中的方法无法满足子类需求时候,重写方法 2:当子类需要有特有的功能时候,重写方法. Java方法重载:在同一类中,出现多个方法名相同的方法,但是参 ...
- Java创建对象的六种方法-权当记录一下
1 简介 Java是面向对象的编程语言,只要使用它,就需要创建对象.Java创建对象有六种方法,实际常用的不会这么多,这里权当是记录一下. 2 六种方法 (1)使用new关键字 Pumpkin p1 ...
- 物流配送管理系统(ssm,mysql)
项目演示视频观看地址:https://www.toutiao.com/i6811872614676431371/ 下载地址: 51document.cn 可以实现数据的图形展示.报表展示.报表的导出. ...
- [hdu5353]模拟
题意:有n个小朋友,每个小朋友手上有一些糖,考虑每两个相邻的小朋友a.b,可以选择执行3种操作中的任一种:(1)a给b一粒糖(2)b给a一粒糖(3)不进行任何动作,问能否通过确定每两个相邻的小朋友的操 ...
- 2020年腾讯实习生C++面试题&持续更新中(5)
2020年腾讯实习生C++面试题&持续更新中(5) 大家好呀,我是好好学习天天编程的天天~ 昨天一位小伙伴反馈已经拿到了腾讯offer,很是替小伙伴的激动~ 那今天还是持续给大家分享面经,希望 ...