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方法 ...
随机推荐
- Redis 服务搭建
1.redis 简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis ...
- 面试中的volatile关键字
在Java的面试当中,面试官最爱问的就是volatile关键字相关的内容.经过多次面试之后,你是否思考过,为什么他们那么爱问volatile关键字相关的问题?而对于你,如果作为面试官,是否也会考虑采用 ...
- mybatis控制台打印执行的sql语句
- Golang 实现 Redis(5): 使用跳表实现 SortedSet
本文是使用 golang 实现 redis 系列的第五篇, 将介绍如何使用跳表实现有序集合(SortedSet)的相关功能. 跳表(skiplist) 是 Redis 中 SortedSet 数据结构 ...
- Vue中import用法
1. 引入第三方插件 第三方常用插件参考https://blog.csdn.net/vbirdbest/article/details/86527886 2. 导入 css 文件 import 'iv ...
- 数据源管理 | OLAP查询引擎,ClickHouse集群化管理
本文源码:GitHub·点这里 || GitEE·点这里 一.列式库简介 ClickHouse是俄罗斯的Yandex公司于2016年开源的列式存储数据库(DBMS),主要用于OLAP在线分析处理查询, ...
- Docker学习笔记(三):Dockerfile及多步骤构建镜像
Dockerfile指令 官方文档地址:https://docs.docker.com/engine/reference/builder/ Dockerfile是一个文本格式的配置文件,其内容包含众多 ...
- CSS学习—day1
摘要:web前端设计三剑客分为是html.CSS.Javascript,前面我们已经对html基础知识做了介绍,它定义了页面基本组成,而CSS则控制网页的样式和布局. 首先,明确一个问题,什么是CSS ...
- Nginx初步入门
1.Nginx介绍 官网:nginx.org Nginx ("engine x") 是一个开源的.支持高性能.高并发的WWW服务和代理服务软件. 它是由俄罗斯人IgorSysoev ...
- centos7 下安装apache mysql php phpmyadmin。
1 安装mysql yum -y install mariadb-server systemctl start mariadb.service systemctl enable mariadb.ser ...