- 浏览: 3466160 次
- 性别:
- 来自: China
文章分类
- 全部博客 (536)
- ajax (1)
- Algorithm (14)
- Android (40)
- CSS/HTML... (2)
- defy (3)
- DesignPattern (2)
- dorado (0)
- Drools (6)
- English/日本語 (7)
- Flex (2)
- Framework (0)
- Google (3)
- hibernate (13)
- homework (3)
- HTML5 (0)
- IDE (29)
- java (45)
- javaee (7)
- Javascript (14)
- java组件 (5)
- jQuery (4)
- jsp (8)
- jsf (2)
- Linux (2)
- lucene (0)
- mysql (6)
- news (3)
- Oracle (8)
- other (4)
- PHP (5)
- Python (0)
- Software Engineering (3)
- spring (7)
- struts1.x (14)
- struts2.x (14)
- strolling in cloud (1)
- subject:javaEnhance (20)
- Tomcat (7)
- validator (3)
- 学习·方法·心得 (8)
- .NET (2)
- vba (6)
- groovy (5)
- grails (2)
- SWT (0)
- big data (1)
- perl (1)
- objective-c (50)
- product (1)
- mac (7)
- ios (188)
- ios-phone (2)
- ios-system (15)
- ios-network (5)
- ios-file (4)
- ios-db (1)
- ios-media (3)
- ios-ui (27)
- ios-openSource (6)
- ios-animation (5)
- ios-drawing (7)
- c (2)
- ios-app (2)
- ios-course (15)
- ios-runtime (14)
- ios-code (8)
- ios-thread (8)
- ios-LBS (2)
- ios-issue (1)
- ios-design (2)
- Jailbreak (2)
- cocos2d (0)
- swift (16)
- ios-framework (4)
- apple watch (4)
- ios-web (1)
- react native (3)
- TVOS (1)
- OpenGL (1)
最新评论
-
xiaobinggg:
...
Session机制详解 -
菜鸟学生会:
Drools规则工作流引擎开发教程网盘地址:http://pa ...
Drools入门-----------环境搭建,分析Helloworld -
wangyudong:
不是很好用,不支持自动化测试RESTful API,也不支持自 ...
Simple REST Client POST使用方法 -
Paul0523:
很棒的一篇文章,感谢楼主分享
Session机制详解 -
啸笑天:
获取原型对象的三种方法<script>functi ...
复习JavaScript面向对象技术
什么是流:
流是一个抽象的概念。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文件、内存或者网络等。流的创建是为了更方便地处理数据的输入输出。
流分为字节流和字符流。字节流也称为原始数据,需要用户读入后进行相应的编码转换。而字节流的实现是基于自动转换的,读取数据时会把数据按照JVM的默认编码自动转换成字符。
字节流由InputStream和OutputStream处理,而字符流由Reader和Writer处理。Reader和Writer是Java后加入的处理类,出于让数据的处理更方便的目的。
字节流处理概述:
对于字节流处理的类都继承自InputStream和OutputStream这两个抽象类。
InputStream提供的最重要的方法是:
用于从输入流中读取字节。
OutputStream提供的最重要的方法是:
用于将字节写入输出流。
字节流处理类概述:
字节流的处理类有很多,他们都继承自InputStream或者OutputStream抽象类。
输入流:
先谈谈输入流,输入流中跟数据源直接接触的类有:FileInputStream和ByteArrayInputStream,他们分别实现了从文件或者内存中的字节数组读入数据到输入流。
其他的输入流处理类都是装饰类(Decorator模式),下面对他们进行一下简单介绍:
BufferedInputStream: 提供了缓冲功能。
DataInputStream: 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。
//PipedInputStream: 允许以管道的方式来处理流。当连接到一个PipedOutputStream后,它会读取后者输出到管道的数据。
PushbackInputStream: 允许放回已经读取的数据。
SequenceInputStream: 能对多个inputstream进行顺序处理。
输出流:
基本上每个输入流类都有一个相应的输出流类,提供相应的输出流处理。
同样,跟数据目的地直接接触的类有:FileOutputStream和ByteArrayOutputStream,前者实现了把数据流写入文件的功能,后者实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()
和 toString()
获取数据。
下面对其它的装饰类做一下简单介绍:
BufferedOutputStream: 提供了缓冲功能的输出流,在写出完成之前要调用flush来保证数据的输出。
DataOutputStream: 数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。
//PipedOutputStream: 允许以管道的方式来处理流。可以将管道输出流连接到管道输入流来创建通信管道。管道输出流是管道的发送端。通常,数据由某个线程写入 PipedOutputStream
对象,并由其他线程从连接的PipedInputStream
读取。
PrintStream: 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。我们经常用到的System.out或者System.err都是PrintStream。
字符流处理概述:
所有的字符流操作类都继承自Reader或者Writer这两个抽象类。
Reader提供的重要方法有:
他们提供了从流中读取数据到字符数组或者CharBuffer的功能。
Writer提供的重要方法有:
- write(char[] cbuf);
- write(char[] cbuf, int off, int len);
- write(int c);
- write(String str);
- write(String str, int off, int len);
- write(char[] cbuf);
- write(char[] cbuf, int off, int len);
- write(int c);
- write(String str);
- write(String str, int off, int len);
他们提供了把字符、字符数组或者字符串写入流中的功能。
字符流处理类概述:
输入流:
跟数据源直接接触的类:
CharArrayReader: 从内存中的字符数组中读入数据,以对数据进行流式读取。
StringReader:从内存中的字符串读入数据,以对数据进行流式读取。
FileReader:从文件中读入数据。注意这里读入数据时会根据JVM的默认编码对数据进行内转换,而不能指定使用的编码。所以当文件使用的编码不是JVM默认编码时,不要使用这种方式。要正确地转码,使用InputStreamReader。
装饰类:
BufferedReader:提供缓冲功能,可以读取行:readLine();
LineNumberReader: 提供读取行的控制:getLineNumber()等方法。
InputStreamReader: 字节流通向字符流的桥梁:它使用指定的
读取字节并将其解码为字符。charset
输出流:
根数据目的相关的类:
CharArrayWriter:把内存中的字符数组写入输出流,输出流的缓冲区会自动增加大小。输出流的数据可以通过一些方法重新获取。
StringWriter: 一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串。
FileWriter:把数据写入文件。
装饰类:
BufferedWriter:提供缓冲功能。
OutputStreamWriter:字符流通向字节流的桥梁:可使用指定的
将要写入流中的字符编码成字节。charset
PrintWriter: 向文本输出流打印对象的格式化表示形式。
流处理中的其它方法:
mark和reset用于重复读取某段的数据,如下代码:
- is = new BufferedInputStream(new FileInputStream("res/input.data"));
- assertTrue(is.available() > 0);
- assertTrue(is.markSupported());
- // The read limit has no effect.
- is.mark(0);
- int first = is.read();
- int second = is.read();
- is.reset();
- int firstAgain = is.read();
- int secondAgain = is.read();
- assertEquals(first, firstAgain);
- assertEquals(second, secondAgain);
- is = new BufferedInputStream(new FileInputStream("res/input.data"));
- assertTrue(is.available() > 0);
- assertTrue(is.markSupported());
- // The read limit has no effect.
- is.mark(0);
- int first = is.read();
- int second = is.read();
- is.reset();
- int firstAgain = is.read();
- int secondAgain = is.read();
- assertEquals(first, firstAgain);
- assertEquals(second, secondAgain);
Writer或者OutputStream中的flush(): 刷新该流的缓冲,用于确保数据的输出。
close(): 关闭流并释放与之关联的所有系统资源。
感谢:http://www.iteye.com/topic/313635
发表评论
-
java正则表达式修改html标签中属性
2013-04-21 11:45 4876package com.ez; import ... -
String.intern()解析
2012-07-16 22:53 1627String.intern()解析 Str ... -
Java中的访问控制public,private,protected,package
2012-05-08 02:41 28701. Java中的访问控制表1-1 可见/ ... -
Beginning SWT
2012-04-12 15:41 0SWT(Standard Widget Toolkit, ... -
Java IO读写大文件的几种方式及测试
2012-03-13 17:24 3440读取文件大小:1.45G 第一种,OldIO: (注意文件和系 ... -
Java编程中“为了性能”尽量要做到的一些地方
2012-03-13 17:25 1368最近的机器内存又爆满了,除了新增机器内存外,还应该好好r ... -
复习nio
2012-03-13 17:24 1785简介: JDK 1.4 中引入的新输入输出 (NIO) 库在 ... -
The Closeable, Flushable, Readable, and Appendable interfaces
2012-03-13 17:23 1913Java SE 5.0引入了4个附加的接口:C ... -
java模拟spring ioc
2011-12-08 17:21 2257<?xml version="1.0&q ... -
javaweb读取任意目录的下的properties配置文件(解决普通java类读web-inf下任意目录)
2011-10-28 15:59 11940看到很多用getResourcesAsStream()来读取. ... -
java程序员常用英语
2011-11-14 08:16 5632干程序员这行实在是 ... -
Oracle在2011年取得的Java主要成就
2011-10-20 08:29 2059甲骨文公司继续推动Java前进的战略。自2010年1月收购 ... -
Java规则引擎与其API(JSR-94)
2011-10-19 10:02 4251转自:http://www.ibm.com/developer ... -
Core Java , Volume 1 笔记
2011-07-17 11:36 051 StringBuffer:效率略低于String ... -
树形显示
2011-07-17 11:26 1681/** 树形结构应用十分广泛。 下面这段代码根据 ... -
求能除尽1至n的最小整数
2011-07-16 02:43 4021为什么1小时有60分钟,而不是100分钟呢?这是历史上的 ... -
java 四则运算 栈的实现
2011-07-15 13:42 13899import java.util.Stack; /* ... -
java的中文转拼音组件---pinyin4j的使用
2011-07-02 19:09 2335pinyin4j是一个功能强悍的汉语拼音工具包,主要是从汉语获 ... -
【code】java的中文转拼音工具类
2011-07-01 09:26 3782package my; public class ... -
Java随机数详解
2011-05-14 19:57 0Java随机数详解新手晋级 方法1(数据 ...
相关推荐
Java IO 是Java编程语言中用于处理输入和输出的重要部分,它提供了一系列的类和接口来实现数据的读写。在Java IO中,我们通常会接触到五类关键的类:File、RandomAccessFile、OutputStream、InputStream、Writer和...
"JAVA书本复习题答案整合"是一个精心整理的资源包,它集合了多套Java书本复习题目及其对应的答案,旨在帮助学习者高效地备考期末考核。 1. **Java基础知识**:复习题可能涵盖了Java的基础语法,如变量、数据类型、...
### Java考试复习资料详解 #### 一、架构模式:B/S与C/S - **B/S架构**(Browser/Server,浏览器/服务器)是一种通过Web浏览器进行访问的应用系统架构。客户端只需要一个Web浏览器即可,无需安装任何软件。所有的...
这个“java_复习题库”包含了丰富的学习资料,旨在帮助学习者巩固Java编程的知识点,提升技能水平。以下是一些核心的Java编程知识点,通过复习题库可以深入理解和掌握: 1. **基础语法**:Java的基础包括变量、数据...
javaIO的复习总结思维导图,javaIO的复习总结思维导图
`java.io`和`java.nio`包提供了丰富的类和接口来处理各种I/O操作。 10. **集合框架**:Java集合框架包括接口(如List、Set、Map)和实现这些接口的类(如ArrayList、HashSet、HashMap)。它们提供了存储、检索和...
这份"2019年java面试复习资料.rar"提供了全面的复习材料,帮助求职者在2018年的面试中表现出色。 该压缩包中的"2018年最新版Java程序员面试宝典(完整版本)2018"是关键资源,它涵盖了Java语言的基础、进阶、设计模式...
【Java 考试复习指南】 1. Java 编译过程:Java 源程序文件(扩展名为 .java)经过Java编译器编译后,会生成字节码文件(扩展名为 .class)。这是Java程序运行的基础,因为JVM(Java虚拟机)执行的是字节码。 2. ...
"Java复习题3"显然聚焦于帮助学习者巩固和深化对Java语言的理解。在这个复习题集中,我们可能会涉及众多Java的基础概念和高级特性。下面将就Java的一些核心知识点进行详细阐述。 1. **基本语法**: Java是一种静态...
### Java面试复习资料详解 #### 一、内存泄漏与内存溢出 - **内存泄漏**:指程序在申请内存后,无法释放已分配的内存空间,导致随着时间的推移,程序所消耗的内存逐渐增加。这通常是因为程序员未能正确地管理内存...
本资料集将深入探讨Java IO系统的核心概念、关键类以及常用方法,帮助你全面复习和巩固这一领域的知识。 1. **流的概念** 流是Java IO的基础,它代表了数据的序列,可以从源到目的地传输。流可以分为字节流和字符...
这份"Java复习资料及例题源代码"是学习和备考Java相关考试的理想资源,包含了一系列经典例题和配套的源代码,对于深入理解和掌握Java编程的核心概念极其有益。 一、Java基础语法 在复习资料中,你可能会遇到关于...
本教程主要针对IO流的概述进行复习,帮助学习者理解和掌握这一关键概念。 1. 字节流:字节流处理的是单个字节的数据,包括InputStream和OutputStream家族。InputStream用于读取数据,如 FileInputStream 用于读取...
- **IO流与NIO**:理解基本的IO流模型,以及Java NIO(非阻塞I/O)的优势和用法。 - **多线程**:了解线程的创建方式,同步机制,以及线程池的使用。 - **网络编程**:理解Socket编程,能够实现简单的客户端和服务器...
15. **Java标准库(Java API)**:熟悉并熟练使用Java提供的各种标准库,如IO、NIO、集合、日期时间等。 以上知识点是Java初学者必须掌握的基础内容。通过"JAVA-5"到"JAVA-1"的文件,你可以系统地复习和巩固这些...
7. **文件与IO流**: - 文件操作,包括读写文件、文件的创建、删除和重命名。 - 输入/输出流的概念,如字节流和字符流,以及缓冲流、对象序列化和反序列化。 8. **多线程**: - 创建和管理线程,了解Thread类和...