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可以 ...
随机推荐
- MPEG2-TS音视频同步原理
一.引言MPEG2系统用于视音频同步以及系统时钟恢复的时间标签分别在ES,PES和TS这3个层次中. 在TS 层, TS头信息包含了节目时钟参考PCR(Program Clock Reference ...
- 第十届蓝桥杯 试题 E: 迷宫
试题 E: 迷宫 本题总分:15 分 [问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方. 010000 000100 001001 110000 迷 ...
- HTTP Error: 413 Request Entity Too Large的解决
昨天在使用PHP的CURL调用另一个项目的API:A时,出现了HTTP Error: 413 Request Entity Too Large的错误.而调用另一个API:B则没有这个错误. A的API ...
- poj-3253-Fence Repair(哈夫曼)
/* Fence Repair Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19914 Accepted: 6314 Desc ...
- PHP图片加水印文字及图片合成缩放
<?php //图片添加文字水印 /*$bigImgPath = 'background.png'; $img = imagecreatefromstring(file_get_contents ...
- Xshell连接虚拟机突然被拒,提示再次输入密码。。。
sudo vim /etc/ssh/sshd_config 将 # Authentication: LoginGraceTime 120 PermitRootLogin prohibit-passwo ...
- python3.6的turtle库练手
import turtle as t t.speed(10) t.pencolor("yellow") t.fillcolor("red") for num i ...
- 好记性不如烂笔头-linux学习笔记4apache相关知识
apache 启动有2种模式 1是prefork模式,每个进程对应一个线程,如果是比较稳定的平台,那么prefork模式是worker模式 比较好,效率高,但是吃的内存比较大. 2 如果是高负载高并发 ...
- 【CentOS 6.5】【转】新版本linux生成xorg.conf
新版本的linux如何生成xorg.conf 较新版本的linux系统都已经没有xorg.conf文件,但是有时候为了对显示做微调或为了支持多屏显示等原因,还需要手工生成一个xorg.conf,然后根 ...
- open方法读写文件
vb使用open方法读写文件 (一)打开和关闭文件 1.顺序文件 打开顺序文件,我们可以使用Open语句.它的格式如下: Open pathname For [Input |Output |Appen ...