- 浏览: 74083 次
- 性别:
- 来自: 安徽省
文章分类
最新评论
-
di1984HIT:
真心学习了,不错。
Java编程中“为了性能”需做的26件事 -
di1984HIT:
context上面有个属性控制吧。
tomcat 不能自动解压war包问题 -
di1984HIT:
没用过试验一下。
double 加法计算 -
di1984HIT:
学习了,不错。
PHP 中& & 与 || 的区别 -
306963591:
我理解Java中的引用传递是传递对象的地址
Java 引用传递与值传递
什么是流:
流是一个抽象的概念,当java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文件,内存或者网络等。流的创建是为了更方便地处理数据的输入输出。
流分为字节流和字符流。字节流也称为原始数据,需要用户读入后进行相应的编码转换。而字符流的实现是基于自动转换的,读取数据时会把数据按照JVM的默认编码自动转换成字符。
字节流由InputStream和OutputStream处理,而字符流由Reader和Writer处理。Reader和Writer是Java后加入的处理类,处于让数据的处理更方便的目的。
字节流处理概述:
对于字节流处理的类都继承自InputStream和OutputStream这两个抽象类。
InputStream提供的最重要的方法是:
read(); read(byte[] b) ; read(byte[] b, int off, int len) ;
用于从输入流中读取字节。
OutputStream提供的最重要的方法是:
write(int b); write(byte[] b); write(byte[] b, int off, int len)
用于将字节写入输出流。
字节流处理类概述:
字节流的处理类有很多,他们都继承自InputStream或者OutputStream抽象类。
输入流:
先谈谈输入流,输入流中跟数据源直接接触的类有:FileInputStream和ByteArrayInputStream,他们分别实现了从文件或者内存中的字节数组读入数据到输入流。
其他的输入流处理类都是装饰类(Decorator模式),下面对他们进行一下简单介绍:
BufferedInputStream:提供了缓冲功能。
DataInputStream:允许应用程序以与机器无关方式从底层输入流中读取基本Java数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。
PipedInputStream:允许以管道的方式来处理流。当连接到一个PipedOutputStream后,它会读取后者输出到管道的数据。
PushbackInputStream:允许放回已经读取的数据。
SequenceInputStream:能对多个inputStream进行顺序处理。
输出流:
基本上每个输入流都有一个相应的输出流类,提供相应的输出流处理。
同样,跟数据目的地直接接触的类有:FileOuputStream和ByteArrayOutputStream,前者实现了把数据流写入文件的功能,后者实现了一个输出流,其中的数据被写入了一个byte数组。缓冲区会随着数据的不断写入而自动增长。可使用toByteArray()和toString()获取数据。
下面对其它的装饰类做一下简单介绍:
BufferedOutputStream:提供了缓冲功能的输出流,在写出完成之前要调用flush来保证数据的输出。
DataOutputStream:数据输出流允许应用程序以适当方式将基本java数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。
PipedOutputStream:允许以管道的方式来处理流。可以将管道输出流连接到管道输入流来创建通信管道。管道输出流是管道的发送端。通常,数据由某个线程写入PipedOutputStream对象,并由其他线程从连接的PipedInputStream读取。
PrintStream:为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。我们经常用到的System.out或者System.err都是PrintStream。
字符流处理概述:
所有的字符流操作类都继承自Reader或者Writer这两个抽象类。
Reader提供的重要方法有:
read(char[] cbuf); read(char[] cbuf, int off, int len); read(CharBuffer target);
他们提供了从流中读取数据到字符数组或者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);
他们提供了把字符,字符数组或者字符串写入到流中的功能。
字符流处理类概述:
输入流:
跟数据源直接接触的类:
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);
Writer或者OutputStream中的flush():刷新该流的缓冲,用于确保数据的输出。
close(): 关闭流并释放与之关联的所有系统资源。
转载:http://www.iteye.com/topic/313635
发表评论
-
Java 集合 Stack、Queue、Map插入、移除和遍历
2013-02-22 14:55 54491、Stack 操作 // Stack 类表示后进先出 ... -
Java 集合 ArrayList和LinkedList的区别
2013-02-22 13:48 962一般大家都知道ArrayList和LinkedList的大致 ... -
Java几款性能分析工具的对比
2013-02-21 14:24 860在给客户进行应用程序维护的过程中,我注意到一些关于高负载条件 ... -
Java编程中“为了性能”需做的26件事
2013-02-21 14:16 966最近的机器内存又爆满 ... -
Java 引用传递与值传递
2013-02-21 12:02 1380总结: 我理解Java中的引用传递是传递对象的地址。 ... -
Java 基本数据类型
2013-02-21 11:21 1115数据类型 大小 范围 默认值 byte ... -
Spring 源码下载及编译
2012-09-13 00:41 2345svn下载https://github.com/Spr ... -
Spring 源码编译 出错FAILURE: Build failed with an exception.
2012-09-13 00:01 4508编译过程中出现如下错误 FAILURE: Bui ... -
double 加法计算
2011-12-13 09:24 1614/* * @(#) Test.java 1.0 2 ... -
findbugs 出错类型及对应解释
2011-11-01 10:13 2424findbugs 出错类型及对应解释1、Dead sto ... -
Java集合类
2011-09-05 15:22 1130Java集合类 1.Java的集合类是一个特别有用的集合类,可 ... -
Java编程中影响性能的一些特点
2011-08-31 09:03 721文中将提供一些在Java编程中影响性能的一些特点,为了能够提高 ... -
JDK与JRE的区别
2011-08-24 08:39 867很多程序员已经干了一 ... -
java 获取路径
2011-08-03 17:34 6381、利用System.getProperty()函数获取当 ... -
简单工厂模式的例子
2011-07-27 09:46 862本示例简单的实现了工 ... -
简单spring aop 例子
2011-07-21 15:35 940最近比较空闲,于是看了spring方面的知识,看到spring ... -
FileSystemXmlApplicationContext与ClassPathXmlApplicationContext读取文件目录区别
2011-07-20 17:50 953只为做个笔记 FileSystemXmlApplica ... -
超级简单Spring3 Quartz 例子
2011-07-20 11:28 2141关于Spring Quartz 我就不多介绍,因为小弟是个菜鸟 ... -
求java动态代理例子
2011-06-21 09:29 590希望大家可以给我讲解一些java动态代理原理及例子说明,谢谢 -
Java NIO API详解
2011-05-11 16:34 1040在JDK 1.4以前,Java的IO操作集中在java. ...
相关推荐
Java IO应届生培训讲义是一份面向刚毕业的大学生进行Java IO相关知识的培训资料,它涵盖了Java IO的基础知识、不同的IO模型以及Java中的BIO、NIO和AIO高级IO类库。下面详细解释这些知识点: 1. 用户空间和内核空间 ...
Java IO(Input/Output)是Java编程语言中用于处理输入输出操作的重要部分,涉及文件、网络、内存等数据传输。本文将深入探讨Java IO的基本概念、分类、选择流的策略以及常用的流类型。 首先,File类是Java IO的...
java IO教程,java IO教程,java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程,java IO教程,java IO教程,java IO...
Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要组成部分。它提供了一整套类库,使得开发者能够有效地读取和写入数据到不同的源和目标,如文件、网络、内存缓冲区等。Java IO体系结构设计得...
Java IO(Input/Output)是Java编程语言中用于处理输入输出操作的基础框架,它提供了丰富的类库,使得程序能够与各种设备、文件、网络进行数据交互。然而,传统的IO模型在处理大量并发连接时表现出效率较低的问题,...
《Java IO.chm》是一个关于Java输入/输出(IO)技术的压缩文件,其中包含了丰富的资料,适合开发者深入理解和学习Java IO系统。这篇详细的总结将围绕Java IO体系结构、核心类、流的概念、缓冲区、转换流、字符集、...
Java IO 详解 Java IO(Input/Output)是 Java 语言中用于处理输入输出操作的类库,提供了大量的类和方法来实现文件、网络、字节流等方面的输入输出操作。下面对 Java IO 中的重要知识点进行详细说明。 一、File ...
Java IO处理类是Java平台中用于输入输出操作的核心部分,它允许程序与各种类型的输入源(如文件、网络连接)以及输出目标(如显示器、打印机)进行交互。本篇文章将全面解析Java IO处理类,包括基本概念、常用类库、...
### Java IO操作详解 #### 一、Java IO基础概念 Java IO(Input/Output)是Java编程语言中处理输入输出的基础框架。它提供了多种类和接口来处理不同类型的输入输出需求,包括文件读写、网络通信等。Java IO体系...
Java IO编程是Java平台中处理输入输出操作的重要组成部分,它提供了丰富的类库,使得开发者能够高效地进行数据的读取、写入、流的管理和转换。在这个集合中,我们主要探讨的是Java IO在文件读写方面的实践应用。 一...
Java IO流技术是Java平台中用于处理输入输出的重要机制,其核心在于数据的传输,从数据源到程序或从程序到目的地。在Java中,流分为两大类:输入流(InputStream、Reader)和输出流(OutputStream、Writer)。输入流...
在“JavaIODemo”这个示例中,可能会包含以上提到的一些或全部Java IO操作的代码实例,通过这些实例,我们可以学习如何在实际项目中应用Java IO API。实践是掌握Java IO的最佳方式,通过对这些示例的分析和运行,...
Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要组成部分。它提供了丰富的类库,允许程序员在程序之间传输数据,包括从文件、网络、内存缓冲区到其他程序或系统组件。Java IO API是Java平台的...
JavaIO流详解归纳 Java 的核心库 java.io 提供了全面的 IO 接口,包括文件读写、标准设备输出等。Java 中 IO 是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。在项目开发中,IO 是非常...
Java IO操作是Java编程中的重要组成部分,主要用于处理输入和输出数据。在Java中,IO操作涉及到文件、字节流、字符流以及管道流等多个概念。下面将详细解释这些知识点。 首先,我们来看“文件类”。在Java中,`java...
Java IO 与 装饰模式 在Java编程中,输入输出(IO)处理是程序设计中的重要组成部分,用于读取、写入和处理数据。Java IO库提供了一整套类来支持各种类型的输入输出操作,包括文件、网络、内存等。而装饰模式是一种...
2、常用21个IO流:FileWriter、FileReader、...3、JAVA IO流经典代码示例,示例从易到难。代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。
Java IO流是Java平台中的重要组成部分,用于处理输入和输出操作。它允许程序与外部设备如硬盘、网络、内存等进行数据传输。IO流的概念基于流(Stream)模型,数据以字节或字符序列的形式流动。Java IO库提供了丰富的...
Java IO流是Java编程语言中处理输入输出操作的重要部分,尤其在数据传输、文件读写等方面发挥着核心作用。本文将深入探讨Java IO流的基本概念、类型以及它们在实际开发中的应用。 首先,理解IO流的基本概念至关重要...
Java IO(Input/Output)是Java平台中处理输入与输出数据的核心部分,它提供了丰富的类库,使得开发者能够高效地进行文件、网络、内存以及其他I/O流的操作。本篇文章将全面解析Java IO工具类,帮助你理解并掌握其在...