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可以 ...
随机推荐
- oracle/ms sql 系统表
sql server系统表详细说明 sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库字符集与排序顺序 sysconfigures主数据库 配置选项 syscurco ...
- 黄聪:C#程序中判断是否处在DEBUG调试状态或者RELEASE发布状态
习惯了用老方式(注释的方式)来对程序进行调试,不过昨天才发现这样调试存在很大的隐患:在工程发布的时候如果忘记把该注释的代码注释掉,而让这些调试信息随工程一起发布,如果是可见的调试信息倒好发现,如果不是 ...
- Android XML数据解析
XML:可扩展标记语言.一般用于数据存储,SharedPreference就是使用xml文件保存信息的,SQLite底层也是xml文件,在网络方面通常作为信息的载体,把数据包装成xml来传递. XML ...
- Hive 安装操作
本篇为安装篇较简单: 前提:1: 安装了hadoop-1.0.4(1.0.3也可以)正常运行2:安装了hbase-0.94.3, 正常运行 接下来,安装Hive,基于已经安装好的hadoop,步骤如下 ...
- phpcms模块开发中的小问题及解决方法
1.模块菜单中文名出错 在编写安装模块时候可能需要更改extention.inc.php中定义中文名称,由于反复安装或者通过phpcms的扩展->菜单管理 修改菜单名会导致中文名失败.解决办法很 ...
- Oracle 查询历史数据(转帖)
回复误删除数据信息. 1.执行 alter table table_name enable row movement; 2.执行 FlashBack table table_name to times ...
- urllib2模块的基本使用(四)
urllib2库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 在Python中有很多库可以用来抓取网页,我们先学习urllib2. urllib2 是 P ...
- unicat,multicast,broadcast区别
单播.多播和广播单播”(Unicast).“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语.那么这些术语究竟是什么意思?区别何在? 1.单 ...
- c++ new 与malloc有什么区别
前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老生常谈的问题.当时我回答new从自由存储区上分配内存,malloc从堆上分配内存:new/de ...
- Spring Data JPA 基本使用
Spring Data 简化开发,支持Nosql和关系型数据库, DEMO https://github.com/easonstudy/boot-demo/tree/master/boot-sprin ...