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周总结的更多相关文章

  1. 20155335俞昆《Java程序设计》第五周总结

    #  20155335    <Java程序设计>第五周学习总结 ##  教材学习内容总结 ##  教材学习中的问题和解决过程 对于异常处理,程序中总有意想不到的状况所引发的的错误,Jav ...

  2. 20155335俞昆《java程序设计》第三周总结

    20155335  2006-2007-2  <Java程序设计>第三周学习总结 ##  教材学习内容总结 首先,关键是区基本类型和类类型,,产生对象必须定义类,类是一个概念,并不存在,对 ...

  3. 20155335 俞昆 2016-2017-2 《Java程序设计》第九周学习总结

    学号 2016-2017-2 <Java程序设计>第九周学习总结 ##JDBC入门 在正式介绍JDBC前,已知JDBC是用来执行SQL的解决方案,开发人员使用JDBC的标准接口,开发人员不 ...

  4. # 20155337 2016-2017-2 《Java程序设计》第九周学习总结

    20155337 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 JDBC(Java DataBase Connectivity)即java数据库连 ...

  5. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  6. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  7. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  8. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  9. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  10. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

随机推荐

  1. 转:HL7 Tools suite

    HL7 Tools suite   HL7的官网有很多开源工具, 比如:RoseTree,V3Generator,RMIM Designer, Design Repository, V2 & ...

  2. mybatis 高级映射 简单例子

    1.建表 DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `gender` ) NOT NULL, `name` ) NOT NULL, `id` ...

  3. Azkaban 使用问题及解决

    什么是Azkaban Azkaban是一款基于Java编写的任务调度系统 任务调度:有四个任务脚A.B.C.D,其中任务A与任务B可以并行运行,然后任务C依赖任务A和任务B的运行结果,任务D依赖任务C ...

  4. Django 组件-分页器

    Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...

  5. java批量下载,将多文件打包成zip格式下载

    现在的需求的: 根据产品族.产品类型,下载该产品族.产品类型下面的pic包: pic包是zip压缩文件: t_product表: 这些包以blob形式存在另一张表中: t_imagefile表: 现在 ...

  6. Bootstrap-Other:CSS编码规范

    ylbtech-Bootstrap-Other:CSS编码规范 1.返回顶部 1. Bootstrap CSS编码规范 语法 用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致 ...

  7. HyberLedger Fabric学习(4)-chaincode学习(操作人员)

    参考:http://hyperledger-fabric.readthedocs.io/en/latest/chaincode4noah.html chaincode也能被称作“智能合约”,一般情况下 ...

  8. 并发服务器和HTTP协议

    单进程服务器 1. 完成一个简单的TCP服务器 from socket import * serSocket = socket(AF_INET, SOCK_STREAM) # 重复使用绑定的信息 se ...

  9. 错误:HttpServlet was not found on the Java

    我们在用Eclipse进行Java web开发时,可能会出现这样的错误:The superclass javax.servlet.http.HttpServlet was not found on t ...

  10. 用MyEclipse JPA创建项目

    http://www.myeclipsecn.com/learningcenter/persistence-development/myeclipse-jpa/ 用MyEclipse JPA创建项目 ...