1.1 以字节为导向的stream
以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种类型:
1) InputStream:
1) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用
2) StringBufferInputStream:把一个String对象作为InputStream
3) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作
4) PipedInputStream:实现了pipe的概念,主要在线程中使用
5) SequenceInputStream:把多个InputStream合并为一个InputStream
2) OutputStream
1) ByteArrayOutputStream:把信息存入内存中的一个缓冲区中
2) FileOutputStream:把信息存入文件中
3) PipedOutputStream:实现了pipe的概念,主要在线程中使用
4) SequenceOutputStream:把多个OutStream合并为一个OutStream
1.2 以Unicode字符为导向的stream
以Unicode字符为导向的stream,表示以Unicode字符为单位从stream中读取或往stream中写入信息。以Unicode字符为导向的stream包括下面几种类型:
1) InputStream
1) CharArrayReader:与ByteArrayInputStream对应
2) StringReader:与StringBufferInputStream对应
3) FileReader:与FileInputStream对应
4) PipedReader:与PipedInputStream对应
2) OutputStream
1) CharArrayWriter:与ByteArrayOutputStream对应
2) StringWriter:无与之对应的以字节为导向的stream
3) FileWriter:与FileOutputStream对应
4) PipedWriter:与PipedOutputStream对应
以字符为导向的stream基本上对有与之相对应的以字节为导向的stream。两个对应类实现的功能相同,字是在操作时的导向不同。如CharArrayReader:和ByteArrayInputStream的作用都是把内存中的一个缓冲区作为InputStream使用,所不同的是前者每次从内存中读取一个字节的信息,而后者每次从内存中读取一个字符。
1.3 两种不现导向的stream之间的转换
InputStreamReader和OutputStreamReader:把一个以字节为导向的stream转换成一个以字符为导向的stream。
2. stream添加属性
2.1 "为stream添加属性"的作用
运用上面介绍的Java中操作IO的API,我们就可完成我们想完成的任何操作了。但通过FilterInputStream和FilterOutStream的子类,我们可以为stream添加属性。
如果我们要往一个文件中写入数据,我们可以这样操作:
FileOutStream fs = new FileOutStream("test.txt");
然后就可以通过产生的fs对象调用write()函数来往test.txt文件中写入数据了。但是,如果我们想实现"先把要写入文件的数据先缓存到内存中,再把缓存中的数据写入文件中"的功能时,上面的API就没有一个能满足我们的需求了。但是通过FilterInputStream和FilterOutStream的子类,为FileOutStream添加我们所需要的功能。
2.2 FilterInputStream的各种类型
2.2.1 用于封装以字节为导向的InputStream
1) DataInputStream:从stream中读取基本类型(int、char等)数据。
2) BufferedInputStream:使用缓冲区
3) LineNumberInputStream:会记录input stream内的行数,然后可以调用getLineNumber()和setLineNumber(int)
4) PushbackInputStream:很少用到,一般用于编译器开发
2.2.2 用于封装以字符为导向的InputStream
1) 没有与DataInputStream对应的类。除非在要使用readLine()时改用BufferedReader,否则使用DataInputStream
2) BufferedReader:与BufferedInputStream对应
3) LineNumberReader:与LineNumberInputStream对应
4) PushBackReader:与PushbackInputStream对应
2.3 FilterOutStream的各种类型
2.2.3 用于封装以字节为导向的OutputStream
1) DataIOutStream:往stream中输出基本类型(int、char等)数据。
2) BufferedOutStream:使用缓冲区
3) PrintStream:产生格式化输出
2.2.4 用于封装以字符为导向的OutputStream
1) BufferedWriter:与对应
2) PrintWriter:与对应
3. RandomAccessFile
1) 可通过RandomAccessFile对象完成对文件的读写操作
2) 在产生一个对象时,可指明要打开的文件的性质:r,只读;w,只写;rw可读写
发表评论
-
Log4j(1)
2007-07-16 11:40 5851、 Log4j是什么? Log4j可以帮助调试(有时候 ... -
Ant
2007-07-16 11:42 566ant使用教程 Ant是什么? Ant是一种基 ... -
Log4j(2)
2007-07-16 17:07 604Log4j由三个重要的组件 ... -
java基础
2007-07-18 16:50 677第一,谈谈final, finally, finalize的区 ... -
spring hibernate struts异常解决办法
2007-07-20 09:56 5601。Caused by: java.lang.NoClassD ... -
eclipse3.2.0+myeclipse5.5.1开发struts1.2+spring2.0+hibernate3.1
2007-07-20 13:37 6661.首先新建一个Web工程2.添加Struts框架1.2版本3 ... -
struts中javascript验证登陆
2007-08-21 10:57 556<script type="text/java ... -
Validator验证框架使用教程
2007-08-21 16:05 591Terry原创,转载请 ... -
Struts:与Tiles框架的第一次亲密接触
2007-08-22 10:37 9061.在你的struts配置文件struts-config.x ... -
用过滤器filter解决乱码
2007-09-25 10:36 828当在做程序的是你也许会遇到一些很让你恼火的乱码问题 ... -
简单工厂模式与工厂方法模式的比较
2008-03-31 09:20 585在OO设计领域,我们知 ... -
简单工厂模式,工厂方法模式和抽象工厂模式的区别
2008-04-01 11:37 569我记得看的阎宏发表在天极网上的文章上举的例子挺好的,他以一个后 ... -
JAVA中获取年月日
2008-04-22 14:48 3348Java 语言提供了许多处理日期的工具。其中一些工具在其他语言 ... -
jsp内置對象
2008-04-27 23:00 569一般来说,我们在使用Struts时,如果要在JSP隐式的传 ... -
spring+javamail
2008-10-08 19:02 6321.首先必须要有spring.jar, mail.jar, c ... -
Spring对IBatis的支持
2008-10-09 15:06 624Spring对IBatis提供了完善的内建支持。使用Sprin ... -
spring+ibatis实例
2008-10-09 16:18 2725首先需要以下这些jar包:commons-dbcp.jar, ... -
jboss虚拟镜像自动部署
2008-12-25 11:04 7391.修改C:\jboss-4.0.5.GA\server\de ... -
Spring配置初始化ApplicationContext
2008-12-30 11:36 5861. 在struts-config.xml里,以插件的形式 ... -
写自定义标签时标记attribute里rtexprvalue的用法
2008-12-31 14:39 491其实以前也有写过自定义标签, 但是没有注意到过<rtex ...
相关推荐
### Java.io包详解 #### 一、概述 Java.io包是Java编程语言中非常重要的一个标准库,它提供了丰富的类和接口,支持多种输入/输出流的处理方式,包括文件I/O、网络通信等场景。Java.io包的核心设计思想是以流...
### Java.io.Reader与Java.io.InputStream的关键差异解析 在深入探讨`java.io.Reader`与`java.io.InputStream`的具体差异之前,我们首先需要理解这两者在Java I/O操作中的基础角色。`java.io.Reader`和`java.io....
Java.io包是Java编程语言中的核心包之一,它包含了用于输入/输出操作的类和接口。这个包在Java中扮演着至关重要的角色,因为它提供了处理数据流、字符流、对象序列化、文件读写以及与操作系统交互的各种工具。在本...
【Java IO包详解】 Java IO包是Java标准库中的核心组件之一,主要用于处理输入和输出操作。这个包包含了大量类和接口,它们提供了各种输入输出流、字符编码、数据转换以及文件操作等功能。Java IO的设计采用了...
Java.io包提供了系统级别的输入/输出操作,通过数据流来实现。数据流支持多种类型的数据,包括简单的字节、基本数据类型、本地化字符以及对象。在Java.io中,程序通过输入流读取来自源的数据,而通过输出流写入并...
gnu.io.CommDriver.class gnu.io.CommPort.class gnu.io.CommPortEnumerator.class gnu.io.CommPortIdentifier.class gnu.io.CommPortOwnershipListener.class gnu.io.Configure.class gnu.io.I2C.class gnu.io.I2...
在Java编程环境中,进行串口通信时,常常会遇到一个问题:缺少`gnu.io`包,导致无法正常编译或运行程序。这个问题主要出现在使用RXTX库进行串口操作的项目中。RXTX是一个开源的Java库,它提供了与硬件进行串行通信的...
串口通讯需要的jar包,gnu.io.SerialPort; gnu.io.CommPortIdentifier; gnu.io.SerialPort; gnu.io.SerialPortEvent; gnu.io.SerialPortEventListener; gnu.io.UnsupportedCommOperationException; Copy RXTXcomm...
5. **心跳检测**:为了检测连接是否仍然活跃,Socket.IO实现了心跳机制,通过发送心跳包来确认连接状态。 6. **房间和频道**:Socket.IO还支持将客户端分组到“房间”或“频道”,这样可以方便地向一组特定的客户端...
使用Date 类获取系统当前时间 Calendar类的使用 使用 Random 类的对象生成随机数 Collection 类的对象的使用 HashMap 对象以键和值的关系形式存储数据
本篇文章将详细介绍如何在Java项目中集成并使用Socket.IO客户端,以及所需的jar包。 首先,Java中实现Socket.IO客户端的关键在于找到合适的库。目前,Java社区有多个针对Socket.IO的实现,如`java-socket.io-client...
在Java编程语言中,`java.io`包是一个非常重要的包,它包含了用于处理输入和输出操作的类和接口。这个包允许我们与外部资源(如文件、设备、网络等)进行交互,包括读取和写入数据。在本章中,我们将深入探讨`java....
网上找来了相关java文件,改文件包主要用于解决类似找不到sun.io.CharToByteConverter类及相关方法情况,放到对应引用文件目录下编译即可。 PS:java文件编码格式为UTF-8,如果有其它编码格式,自己调整一下就行,我...
标题中的“gnu.io.rar_android_gnu.io _librxtxSerial_librxtxSerial._librxtxS”提到了`GNU.IO`库,这实际上是在Android上实现的RXTX库,它是一个开源的Java库,用于串行和并行通信。RXTX库为Java程序员提供了与...
### Java JDK IO包类详解 #### 概述 Java平台提供的`io`包为开发者提供了访问文件系统、对象序列化等功能的基本输入输出能力。它主要包括字节流、字符流及对象流(字节流的包装类)。此外,还提供了一些基本的文件...
`org.apache.commons.io`是这个库的核心包,包含了许多与文件、流、过滤器、读写操作相关的类和工具。 1. **文件操作**: `FileUtils` 类提供了大量的静态方法,用于执行文件和目录的操作,如复制、移动、删除、创建...
在Java中,IO操作主要分为字节流和字符流两大类,分别由`java.io.InputStream`和`java.io.OutputStream`以及`java.io.Reader`和`java.io.Writer`作为基类。字节流处理的是8位的字节,而字符流处理的是16位的Unicode...
Apache Commons IO 是一个Java库,它提供了一系列与输入/输出流、文件操作、I/O utility类等相关的实用工具。这个库极大地简化了处理输入和输出流的复杂性,并且提供了许多方便的功能,使得在Java项目中进行IO操作...
git下载的最新的socket.io,已通过ant打包成jar,https://github.com/Gottox/socket.io-java-client, 大家也可以通过这个链接自己下载