20155335俞昆《java程序设计》第6周总结
20155335 《Java程序设计》第6周学习总结
## 教材学习内容总结
首先,我们需要了解输入和输出的关系,我想,这不同于c语言中的输入和输出,我们首先明白,Java中以串流(Stream)抽象化输入和输出的概念,以及InputStream和Outstream继承架构。
如果将数据从来源输出,可以使用输入串流,如果将数据写入目的地,可以写出输出串流,在Java中,输入串流的代表对象为java.io.InputStream,输出串流的代表对象时java.io.OutputStream实例,我们做的是要设法取得InputStream和OutputStream实例。
要解决的问题是来源和目的地都不知道的情况下去如何撰写程序,可以设计一个通用的dump()的方法,

dump的方法接受InputStream和OutStream实例,分别代表数据的来源,以及输出的数据和目的地,若进行InputStream和OutStream的相关操作若发生错误,会抛出java.io.IOExprction异常,在这里不是特别处理,而是在dump方法上声明throws,由调用dump()的方法的客户端处理。
不使用InputStream和OutStream方法是,必须用close()方法关闭串流,此方法操作了Java.io.Closeable接口,其父接口为java.lang.AutoClose接口。读取数据时,可以使用write()方法,指定要写出的byte数组,初始索引和数据长度。
Dump方法的来源也依赖于InputStream和OutStream,将某个文档读入并另存为另一个文档,这样

如果从HTTP服务器读取某个网页,并另存为一个文档,可以使用设计的dump方法,例如

串流的继承架构是要在了解串流抽象化数据源和目的地概念后,需要弄清楚InputStream和OutStream的继承架构,对其做一个简单的阐述,即BufferedInputStream和DataInputStream共同构成FilterInputStream,FilterInputStream和FileInputStream、ObjectInputStream以及ByteArrayInputStream又共同构成InputStream。
对于OutputStream的常用类继承架构,可以这样阐释。
它由FileOutputstream和ByteArrayOutputStream以及ObjectOutPutStream、FiterOutputStream构成,其中FiterOutputStream又由BufferedOutputStream、DataoutputStream和PrintStream构成。
System.in和System.out分别代表标准输入和标准输出,以个人计算机而言,对应文本模式的输入和输出。对system.in而言,较少直接操作InputStream的方法,而是如前面章节所使用的Java.util.Scanner打包System.in,如果操作Scanner相关类型方法,Scaneer类型会代我操作System.in取得数据。
重新指定标准输出来源,可以使用System的setIn()方法指定InputStream实例,下面范例故意将标准输入指定为FileInputStream可以读取并指定文档并显示在文本模式。

可以使用System的setOut()方法指定PrintStream实例,将结果输出至指定目的地,例如故意将标准输出至文档:

PrintStream接受InnputStream实例,在这个范例中用PrintStream打包FileOutStream我操作PrintStream相关方法,在程序中,PrintStream会代我操作FilStream。
FileInputStream是InputStream的子类,可以指定文件名创建实例,文档开启,就可以用来读取数据。FileOutputStream主要操作了InputStream的read()的抽象方法,是之可以从文档中操作数据,FileOutputstream主要操作了Output的write()的抽象方法,是之可用数据至文档,前面的IO.dump
方法已示范过该方法。
ByteArrayInputSteam与ByteArrayOutputStream
ByteArrayInputStream是Inputstream的子类,可以指定Byte数组创建实例,一旦创建,就可将数据源进行读取,ByteArrayOutput是Outputstream的子类,可以指定Byte数组创建实例,一旦创建将Byte数组当做目的地写入数据。
ByteArrayInputStream主要操作了InputStream的read()抽象方法,是之可以从Byte数组中读取数据。前面的IO.dump()方法示范过了。
对于串流处理装饰器,如果想要为输入/输出的数据做加工处理,可以使用打包器类。
InputStream、outstream的一些子类具有打包器的作用,子类创建时,可以接受InputStream、OutPutstream的实例,我操作printStream的print(),printIn()等方法,printstream会自动转换数组数据,利用打包的OutputStream进行输出。
由于某些类本身并没有改变Inputstream和outStream的行为,只是取得数据后做了一些加工处理,或者是输出后做了一些加工处理,交由OutputStream进行真正输出,因此称他们为装饰器。
常用的串流装饰类,最典型的是BufferdInputstream和BufferedOutputStream实例,每次read()时都会要求读取硬盘,write时会要求写入硬盘。
改写前面的IO.dump为Buffered。IO.dump的方法如下

对于DataInputStream与DataOutputStream,用来装饰InputStream等提供读取、写入java基本数据类型的方法,这些方法可以自动转换。
下面Member类可以调用save()储存的Member实例本身的数据,文件名为Member的会员号码,调用Member.load()指定会员号码,可以读取文档中的会员数据,封装为Member后的实例返回。

字符处理类
reader和writer的继承架构
针对字符数据的读取,Java SE 提供了java.io.reader类,其抽象化了字符数据读入的来源,针对字符数据的写入,则提供java.io.Writer类,其抽象化了数据写出的目的地。
如果想从来源读入字符数据,或将字符数据写至目的地,都可以使用下面的CharUtil.dump()方法。
Dump方法接受Reader与writer的实例,分别代表读取数据的来源,以及输出数据的目睹地,在进行Reader与writer 的相关操作时若发生错误,会抛出IOExpection异常,在这里,会在dump()方法上声明Throws,由调用的dump()方法的客户端处理。
20155335俞昆《java程序设计》第6周总结的更多相关文章
- 20155335俞昆《Java程序设计》第五周总结
# 20155335 <Java程序设计>第五周学习总结 ## 教材学习内容总结 ## 教材学习中的问题和解决过程 对于异常处理,程序中总有意想不到的状况所引发的的错误,Jav ...
- 20155335俞昆《java程序设计》第三周总结
20155335 2006-2007-2 <Java程序设计>第三周学习总结 ## 教材学习内容总结 首先,关键是区基本类型和类类型,,产生对象必须定义类,类是一个概念,并不存在,对 ...
- 20155335 俞昆 2016-2017-2 《Java程序设计》第九周学习总结
学号 2016-2017-2 <Java程序设计>第九周学习总结 ##JDBC入门 在正式介绍JDBC前,已知JDBC是用来执行SQL的解决方案,开发人员使用JDBC的标准接口,开发人员不 ...
- # 20155337 2016-2017-2 《Java程序设计》第九周学习总结
20155337 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 JDBC(Java DataBase Connectivity)即java数据库连 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
随机推荐
- 【python】Beautiful Soup的使用
1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...
- cocos2d-x 3.0 场景切换特效汇总(转)
cocos2d-x 3.0中场景切换特效比较多,而且游戏开发中也经常需要用到这些特效,来使场景切换时不至于那么干巴,遂这里汇总一下,开发中使用. 场景切换用到导演类Directory,大多数用的都是替 ...
- 2018-2019学年第一学期Java课程设计
目录 Magic-Towers 一.团队课程设计博客链接 [团队博客地址](https://www.cnblogs.com/lmb171004/p/10271667.html 二.个人负责模块或任 ...
- Java集合类综合
Java集合类是JDK学习中的一个经典切入点,也是让初学者最初感受到Java魅力的地方之一,你一定不会忘记不需要关心大小的ArrayList,不用自己实现的Queue,和随处可见的HashMap.面试 ...
- [Nlog]使用经验
<?xml version="1.0" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog ...
- VPS(Centos6)连ROS做GRE隧道完整版
国内徐庄1.1.1.1 内网地址192.168.0.0/16 gre隧道适配器地址 172.16.0.45 国外2.2.2.2内网地址无 gre隧道地址172.16.0.46 国外 cent ...
- Maven 创建java Web项目,配置Spring,CXF
1.搭建Maven环境 参考文章 Maven3路程(一)环境搭建 http://www.cnblogs.com/leiOOlei/p/3359561.html Maven3路程(二)Eclipse集成 ...
- Servlet讲解
第1章 Servlet的生命周期 1.1.1 Servlet的生命周期概述 1.1.1.1 什么是生命周期 生命周期:一个对象从创建到销毁过程. 1.1.1.2 Servlet的生命周期(*****) ...
- libtrace 安装 使用 修改
下载 https://github.com/LibtraceTeam/libtrace/releases 解压 进入目录 依赖 sudo apt install libpcap0.8-dev -y a ...
- Space-vim的.spacevim配置备份
安装 windows安装 配置 在C盘的用户目录下,有一个'.spacevim'的文件,可以修改你要的配置 " Let Vim and NeoVim shares the same plug ...