- 浏览: 300907 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (272)
- java (42)
- c (49)
- 算法 (29)
- 汇编语言 (3)
- 字符集 (3)
- error (3)
- 搜索引擎 (2)
- 互联网 (18)
- linux (12)
- 网络 (20)
- VMWare (1)
- 面试 (7)
- c++ (55)
- 设计模式 (3)
- db (9)
- office (2)
- FS (1)
- rest (3)
- Ajax (2)
- Spring (2)
- Hibernate (3)
- matlab (1)
- load balancing (8)
- 分布式计算 (2)
- 易语言 (1)
- apache tomcat (1)
- 测试 (1)
- 数据结构 (5)
- 数学 (13)
- 服务器 (9)
- 读后感 (4)
- 好书介绍 (1)
- script (3)
- wordpress (2)
- delphi (21)
- pascal (8)
- xml (3)
- 趣味 (1)
- PHP (3)
- python (13)
- DLL (4)
- openGL (8)
- windows (2)
- QT (28)
- django (7)
- jquery (1)
- 数据挖掘 (7)
- nginx (1)
- js (1)
- mac (1)
- hadoop (3)
- 项目管理 (1)
- 推荐系统 (1)
- html (1)
最新评论
-
晴天1234:
related remove:attention.ibus和u ...
UBUNTU的默认root密码是多少,修改root密码 -
美丽的小岛:
美丽的小岛 写道如上配置好就得了。提示没有OpenGl.dll ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
如上配置好就得了。提示没有OpenGl.dll之类的,再增加入 ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
主要是理清哪两个对象之间的关系,是信号与所有槽的关系或者是槽与 ...
QT之DisConnect -
美丽的小岛:
LPCTSTR类型:L表示long指针 这是为了兼容Windo ...
QString与各种字符串之间的转化
这个存在心中的顾虑,在某个时候有一点放宽。本来觉得io流已经掌握了,可是当用起来那时,还是显得没有那么得心应手。古语有云:横看成岭侧成峰。一个问题,从多几个角度去看的话,会觉得明白很多。从一个侧面到另外一个侧面去看。
两个角度:一个角度,decorator设计模式;另一个从传统学习的知识完备性出发(API)。
一、Decorator设计模式看IO
UML图很明显了,下面看一个Cat例子:
对应于上图:
Cat-----Component
public interface Cat { void behavior(); }
SmallCat----ConcreteComponent
public class SmallCat implements Cat { private String name; SmallCat() { } SmallCat(String name) { this.name = name; } public void behavior() { // TODO Auto-generated method stub System.out.print("I'm small cat! My name is " + name); } }
Decorator----Decorator
public interface Decorator extends Cat { public void add() ; }
DecoratorDress----ComcreteDecorator1
public class DecoratorDress implements Decorator { private Cat cat; public DecoratorDress(Cat cat) { this.cat = cat; } public void behavior() { cat.behavior(); add(); } public void add() { System.out.print(",dressing"); } }
DecoratorGlasses-----ComcreteDecorator2
public class DecoratorGlasses implements Decorator { private Cat cat; DecoratorGlasses(Cat cat) { this.cat = cat; } public void add() { System.out.print(",glassing"); } public void behavior() { cat.behavior(); add(); } }
main函数:
public class TestMain { public static void main(String[] args) { Cat scat = new SmallCat("xiao hua") ; DecoratorDress DressCat = new DecoratorDress(scat); DecoratorGlasses GlassesCat = new DecoratorGlasses(dcat) ; GlassesCat.behavior(); } }
这里造了一个猫,然后,让这个小猫穿上衣服,再让它带上眼镜的。呵呵。。。。
言归正传,看看这个io是一个怎样一回事情,他们是这个关系:
这里有四个东西InputStream,OutputStream,Reader,Writer这个接口就构成了JAVA的IO上层。
四个的结构模式都是一样的,用InputStream来举一个例子:
InputStream----Component
FileInputStream同层之类的数据源等-----ComreteComponent
FilterInputStream过滤器----Decorator
DataInputStream同层之类等----ComreteComponent
这样就构成了。
看一例:昨天写的用JAVA实现的简单聊天,用一个client端的代码.
import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.Socket; public class Client01 { public static void main(String[] args) throws Exception { DataInputStream dis = null; System.out.println("client start.."); Socket socket = new Socket("127.0.0.1", 8888); String str = null; while (true) { System.out.print("I say:"); str = new BufferedReader(new InputStreamReader(System.in)) .readLine();// 读入字符 if (str.equalsIgnoreCase("88")) { break; } new DataOutputStream(socket.getOutputStream()).writeUTF(str);// 发送数据 dis = new DataInputStream(socket.getInputStream());// 读入服务器信息 System.out.println("server say:" + dis.readUTF());// 显示服务器信息 } dis.close(); socket.close(); } }
这里就会看到很多的流的一个接一个情况。呵呵,写的时候头真的有点而昏。这个还得去配合Server端的。
好啦,这个就总结到这里了。
二 、功能分类看IO
这个为了记忆,采用了下面这个方法去记忆了,IO流很多内容,但是想用得顺手还得去记得,还得去敲出来,下面这个从另一个角度看看IO,总结出这个树,没有考究过完整性,常用的估计也包括了。
|--基础流(从特定的数据源读写数据,目的:建立一个数据源)
|--File (文件源)
|--FileReader(FileWriter)
|--FileInputStream(FileInputStream)
|-Memory Array(内存数组源)
|--CharArrayReader(CharArrayWriter)
|--ByteArrayInputStream(ByteArrayOutputStream)
|--Memory String (字符串源)
|--StringReader(StringWriter)
|--(对于字符串,字节没有必要有)
|--Pipe(管道源)
|--PipedReader(PipedWrite)
|--PipedInputStream(PipedOutputStream)
|--高级流(连接在已经存在的流(节点流或处理流)之上,目的:让程序对数据的处理为程序提供更为强大的读写功能)
|--Buffering(把数据源读到绶存,用来对数据的缓冲,目的:提高读写效率)
|--BufferedReader(BufferedWriter)
|--BufferedInputStream(BufferedOutputStream)
|--Coverting (目的:让数据由字节向字符转换)
|--InuputSteamReader(OutputStreamWriter)
|--(没有字符流转成字节流的,这个可以用String中的getByte()函数)
|--Data conversion(对特殊数据字节数处理(数据类型流))
|--(数据是与字符平起平坐的,不用经过字符,再去变成数字)
|--DataInputStream(DataOutputStream)
|--Object Serialization
|--(解释同数据转换)
|--ObjectInputStream(ObjectOutputStream)
|--Printing(实现一个标准的输出,不分数据类型的,没有涉及到输入流的,不会有抛出出的异常)
|--PrintWriter()
|--PrintStream()
好了,这个是我的一点java学习总结,分享交流一下,还存在不足,请各位指教。
发表评论
-
推荐!国外程序员整理的Java资源大全
2015-12-15 10:14 649本文由 ImportNew - 唐 ... -
jsoup select 选择器
2015-12-09 14:03 945问题 采用CSS或类似jquery 选择器(selecto ... -
xmlbeans问题(深刻)
2015-11-12 23:08 1171运行scomp,路径永远是一个问题; 1.Program ... -
spring配置一个简单的数据连接池(dbcp)
2015-11-12 14:16 7781.文件结构 2.包结构 3.spring.x ... -
java泛型之通配符的使用
2015-11-12 12:15 680转自: http://blog.csdn.net/lone ... -
Ubuntu下安装JDK
2015-05-02 18:42 535安装JDK: 1.下载 http://www ... -
Delphi开发DLL,Java调用DLL
2014-01-01 16:40 1298用一个小例子来示范一下,不写文件字。 第一步 第二步, ... -
如何在Java中调用DLL方法<转>
2013-12-30 13:36 701Java语言本 ... -
Java对存储过程的调用方法
2013-05-14 09:29 766//一:Java如何实现对存储过程的调用: // A ... -
谈谈对象和XML文件的转换 <转>
2013-04-12 14:18 1018很多时候,我们开发 ... -
详解Java解析XML的四种方法<转>
2013-04-12 14:01 918XML现在已经成为一种通用的数据交换格式,它的平台无关性, ... -
URLClassLoader例子
2012-11-22 15:22 1380学着写一个servlet服务器,里面对servlet的处理就得 ... -
关于JAVA配置文件的小记录
2012-11-20 15:16 977配置文件一般会为编写编程提供方便与灵活的特点,最近看tomca ... -
关于Channel学习
2012-10-07 15:12 1094java的新I/O流,有点意思,看看相关的类,其实就这几个就能 ... -
Buffer类与ByteBuffer类(来自JDK)
2012-10-07 10:10 12041. 类 Buffer(public abst ... -
运行控制台命令(java)
2012-10-07 08:30 2884有时候我们想用java去调用系统的命令实现一些功能,这个功能 ... -
匿名内部类是怎么回事
2012-10-05 13:12 1078匿名内部类真的很神秘的,不过,这种类就喜欢做一些神秘的东西。想 ... -
内部类链接到外部类
2012-10-05 10:45 707java中的内部类可以无条件地使用外部类的资源,这是怎么一回事 ... -
关于对象初始(java)
2012-10-04 20:31 1096有时,对JAVA实例化的顺序会忘记,现在记录一下。 1.调用 ... -
关于static的一些思考(java)
2012-10-04 19:07 1652当有时候回忆JAVA的基础的时候,有些东西一下子会变 ...
相关推荐
IO流 javaio java 流
javaIO流javaIO流
彻底明白Java的IO流
Java IO流详解
Java io流的总结
java零基础自学 之 JavaIO流处理java零基础自学 之 JavaIO流处理
2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...
思维导图io流思维导图io流思维导图io流思维导图io流思维导图io流思维导图io流
这是一份关于android开发的相关资料,供初学者学习使用。
java io流 流基于流向,数据单位两个指标进行IO包根类构造。站在程序员的角度考虑流向问题,我们编的是程序,程序运行在内存中,进内存输入,出内存为输出。
4. Java中流的概念细分 流的方向: 输入流:数据源到程序(InputStream、Reader读进来) ...节点流处于io操作的第一线,所有操作必须通过他们进行;处理流可以对节点流 进行包装,提高性能或提高程序的灵活性。
javaIO流原代码,刚刚开始学习java的同志们可以看看.有问题留言.
java基础之IO流,基础简介知识,帮助你了解java的io技术
关于 java io 流 方面的的引用,主要用一个例子说明!
java IO流精讲 JAVA IO流实例开发
java io流-3.pdf。。。。
java io流源代码 ,相关文章的源代码,文章地址: http://write.blog.csdn.net/postedit/8706349
Java_IO流详解Java_IO流详解Java_IO流详解
java io 的例子有利于对io的熟悉的了解深入,希望对大家有帮助
java IO