- 浏览: 309269 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (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 670本文由 ImportNew - 唐 ... -
jsoup select 选择器
2015-12-09 14:03 985问题 采用CSS或类似jquery 选择器(selecto ... -
xmlbeans问题(深刻)
2015-11-12 23:08 1192运行scomp,路径永远是一个问题; 1.Program ... -
spring配置一个简单的数据连接池(dbcp)
2015-11-12 14:16 8251.文件结构 2.包结构 3.spring.x ... -
java泛型之通配符的使用
2015-11-12 12:15 713转自: http://blog.csdn.net/lone ... -
Ubuntu下安装JDK
2015-05-02 18:42 560安装JDK: 1.下载 http://www ... -
Delphi开发DLL,Java调用DLL
2014-01-01 16:40 1326用一个小例子来示范一下,不写文件字。 第一步 第二步, ... -
如何在Java中调用DLL方法<转>
2013-12-30 13:36 723Java语言本 ... -
Java对存储过程的调用方法
2013-05-14 09:29 800//一:Java如何实现对存储过程的调用: // A ... -
谈谈对象和XML文件的转换 <转>
2013-04-12 14:18 1051很多时候,我们开发 ... -
详解Java解析XML的四种方法<转>
2013-04-12 14:01 977XML现在已经成为一种通用的数据交换格式,它的平台无关性, ... -
URLClassLoader例子
2012-11-22 15:22 1407学着写一个servlet服务器,里面对servlet的处理就得 ... -
关于JAVA配置文件的小记录
2012-11-20 15:16 1009配置文件一般会为编写编程提供方便与灵活的特点,最近看tomca ... -
关于Channel学习
2012-10-07 15:12 1122java的新I/O流,有点意思,看看相关的类,其实就这几个就能 ... -
Buffer类与ByteBuffer类(来自JDK)
2012-10-07 10:10 12441. 类 Buffer(public abst ... -
运行控制台命令(java)
2012-10-07 08:30 2917有时候我们想用java去调用系统的命令实现一些功能,这个功能 ... -
匿名内部类是怎么回事
2012-10-05 13:12 1098匿名内部类真的很神秘的,不过,这种类就喜欢做一些神秘的东西。想 ... -
内部类链接到外部类
2012-10-05 10:45 739java中的内部类可以无条件地使用外部类的资源,这是怎么一回事 ... -
关于对象初始(java)
2012-10-04 20:31 1119有时,对JAVA实例化的顺序会忘记,现在记录一下。 1.调用 ... -
关于static的一些思考(java)
2012-10-04 19:07 1674当有时候回忆JAVA的基础的时候,有些东西一下子会变 ...
相关推荐
java io流 流基于流向,数据单位两个指标进行IO包根类构造。站在程序员的角度考虑流向问题,我们编的是程序,程序运行在内存中,进内存输入,出内存为输出。
从性能角度来看,字符流往往比字节流更高效,这是因为字符流在内部使用了缓冲机制。 #### 字节流体系结构 在Java中,字节流体系结构包括以下几个核心类: - **InputStream**: 所有字节输入流的父类,提供了基本的...
Java全栈知识点问题汇总第四部分主要探讨了Java的IO相关概念,包括IO流的理解、设计模式的应用以及五种IO模型的解析。以下是这些知识点的详细说明: 1. **IO流的理解**: - **字节流与字符流**:字节流处理二进制...
这一组类的跟类有两个:InputStream和OutputStream,分别负责输入和输出。 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件、内存或是网络连接。类似的,当...
7. InputStream和OutputStream:InputStream和OutputStream是用来处理8位字节流的抽象基类,程序使用这两个类的子类来读写8位的字节信息。 8. 标准输入输出流对象:标准输入输出流对象是Java语言中的标准输入输出流...
零拷贝是指从操作系统的角度来看,IO操作不需要将数据从一个缓冲区拷贝到另一个缓冲区。这可以提高IO操作的性能。零拷贝是依赖于操作系统的实现的,如果操作系统实现了零拷贝,那么Java程序中可以使用零拷贝。 NIO...
它包含了两份PDF文件,分别可能是不同的版本或者重复内容,确保了考生可以从多个角度理解和掌握Java知识。 首先,我们来谈谈Java期末考试可能涵盖的知识点。Java的学习通常分为基础语法、面向对象编程、集合框架、...
7. **IO流**:Java的IO流用于读写文件、网络通信等,包括字节流和字符流。书会讲解基本的输入输出操作。 8. **集合框架**:Java集合框架包含各种容器类,如ArrayList、LinkedList、HashSet、HashMap等。这些容器能...
在Java中,主要使用`java.awt`和`javax.imageio`这两个包来处理图像和图形。`java.awt`包提供了诸如Graphics2D类,它支持对图像进行复杂的绘制操作,包括添加文本。`javax.imageio`包则用于读取和写入图像文件。 在...
本文将深入探讨“同步”和“异步”这两种不同的IO处理方式,并结合“源码”和“工具”的角度进行分析,以帮助读者理解这两种方法的工作原理和应用场景。 同步IO和异步IO的主要区别在于如何处理数据传输时的等待时间...
通常Java的文件操作涉及到IO(输入/输出)流,如FileReader,BufferedReader,FileWriter,BufferedWriter等类的使用,虽然这部分内容在提供的文档片段中没有明确显示,但它是Java程序中常用的文件处理技术。...
以下将从多个角度深入解析Java程序设计的关键要素,包括环境搭建、语法基础、面向对象编程、异常处理、图形用户界面、网络编程以及应用程序与Applet的设计。 #### 1. JDK安装与配置 Java Development Kit (JDK)是...
Java提供了两个图形用户界面(GUI)工具包:AWT(Abstract Window Toolkit)和Swing。它们都包含处理图像的类,如`BufferedImage`和`Graphics2D`。在这个场景下,我们主要会用到`BufferedImage`来存储图片,并使用`...
通过以上知识点的介绍,我们可以看到,Java网络编程不仅仅局限在学习套接字编程和网络协议,还包括了并发处理、IO流的使用以及框架的运用等多个方面。理解这些知识点对于成为一名高级Java程序员是必要的。而对于那些...
以下是对这两个库以及如何在Java中实现这一功能的详细解释。 首先,iTextPDF是Java的一个开源库,用于创建、编辑和读取PDF文档。它提供了丰富的API,可以实现PDF文档的各种操作,如添加文本、图像、表格等,以及...
从VB的角度学习JAVA语言,重点在于理解和转换两种语言之间的概念差异。VB是基于.NET框架的,而JAVA是跨平台的,它们的语法和内存管理机制有显著区别。例如,JAVA使用垃圾收集器自动管理内存,而VB则依赖于程序员手动...
为了更具体地展示如何使用JAVA处理AutoCAD DXF文件,下面给出一个简单的示例代码片段: ```java import java.io.BufferedReader; import java.io.FileReader; public class DXFReader { public static void main...
首先,从Java技术栈的角度来看,该系统可能采用了Java SE(标准版)作为后端开发基础,利用Java的面向对象特性进行模块化设计,同时可能运用了Java集合框架、多线程、IO流等核心概念。此外,为了实现数据库交互,...
本知识点整理文档从多个角度对Java核心知识点进行了详细的梳理和说明。 首先,文档详细介绍了Java虚拟机(JVM),这是运行Java字节码的虚拟机,也是Java能够实现跨平台特性的关键。文档中提到了JVM内存区域的划分,...