JAVA核心技术学习——流与文件(2.组合流过滤器)
2014-10-05 09:59
169 查看
概要:流分别具有单独的功能,将不同的流组装套一起以实现复杂的功能。
一.字节的输出输出:(自己总结的分类)
1.从外部(文件等)中获取:
FileInputStream从文档中读取。(如果指定的不是绝对路径名,将以VM启动时所设置的工作目录解析。)
2.具有某些功能(缓冲机制等):
BufferedInputStream将请求的数据块置于缓冲区中,更高效。
PushbackInputStream可以预读下一个字节,之后可以将其推回流中(推回流中意味着下次调用read是会再次获取)
read()
unread()
ZipInputStream从ZIP压缩文件中读取数据。
3.数据处理:
DataInputSream读入数值类型。
注意:上述流可自由组合。将希望得到的流置于最外层,中间的流只是提供所需要的功能。
关于ZIP流(包含于 java.util.zip):
(说明:每个zip文档包含多个项(ZipEntry))
ZipInputStream
ZipEntry getNextEntry()返回下一个entry
void closeEntry()关闭当前entry,之后可使用getNextEntry()继续读取下一个entry
ZipOutputStram
void putNextEntry(ZipEntry ze)将流定位到一个entry
void write(byte[] b, int off, int len) 将字节数组写入到所定位的entry中
void closeEntry()关闭当前entry.
二.字节和字符间的转换
以上全是针对字节的操作(Stream),一下两种流实现字节和字符间的转换。
OutputStreamWriter使用选定的字符编码方式(charset),把Unicode字符流转换为字节流。
InputStreamReader将字节的输入流转换为Unicode。(未指定charset时使用主机系统默认的字符编码方式)
三.文本输入输出
文本输出
PrintWriter以文本格式打印字符串和数字(不能写出原始字节)
print()
println()
PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节
注意:
1. PrintStream主要操作byte流,而PrintWriter用来操作字符流。读取文本文件时一般用后者。
2. 以二进制格式写出数据,使用DataOutputStream
文本输入
BufferReaer必须建立在另一个字符流的基础之上(属于功能流),可以整行读取
read()
readline()
Scanner 基于正则表达式的文本扫描器,可以从文件、输入流、字符串中解析出基本类型值和字符串值。
注意:
1. BufferedReader不能读取基本类型输入项,它总是读取string对象。推荐使用Scanner。
四.随机访问文件
RandomAccessFile类可以在文件中(也只能操作文件)任何位置查找或写入数据。(使用"r"或"rw"在指定用于读入/读入写出 访问选项)
RandomAccessFile独立于InputStream和OutputStream类系。
getFilePointer( )
定位用
seek( )
在文件里移动用
length( )判断文件大小
skipBytes()跳过多少字节数
一.字节的输出输出:(自己总结的分类)
1.从外部(文件等)中获取:
FileInputStream从文档中读取。(如果指定的不是绝对路径名,将以VM启动时所设置的工作目录解析。)
2.具有某些功能(缓冲机制等):
BufferedInputStream将请求的数据块置于缓冲区中,更高效。
PushbackInputStream可以预读下一个字节,之后可以将其推回流中(推回流中意味着下次调用read是会再次获取)
read()
unread()
ZipInputStream从ZIP压缩文件中读取数据。
3.数据处理:
DataInputSream读入数值类型。
注意:上述流可自由组合。将希望得到的流置于最外层,中间的流只是提供所需要的功能。
关于ZIP流(包含于 java.util.zip):
(说明:每个zip文档包含多个项(ZipEntry))
ZipInputStream
ZipEntry getNextEntry()返回下一个entry
void closeEntry()关闭当前entry,之后可使用getNextEntry()继续读取下一个entry
ZipOutputStram
void putNextEntry(ZipEntry ze)将流定位到一个entry
void write(byte[] b, int off, int len) 将字节数组写入到所定位的entry中
void closeEntry()关闭当前entry.
二.字节和字符间的转换
以上全是针对字节的操作(Stream),一下两种流实现字节和字符间的转换。
OutputStreamWriter使用选定的字符编码方式(charset),把Unicode字符流转换为字节流。
InputStreamReader将字节的输入流转换为Unicode。(未指定charset时使用主机系统默认的字符编码方式)
三.文本输入输出
文本输出
PrintWriter以文本格式打印字符串和数字(不能写出原始字节)
print()
println()
PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节
注意:
1. PrintStream主要操作byte流,而PrintWriter用来操作字符流。读取文本文件时一般用后者。
2. 以二进制格式写出数据,使用DataOutputStream
文本输入
BufferReaer必须建立在另一个字符流的基础之上(属于功能流),可以整行读取
read()
readline()
Scanner 基于正则表达式的文本扫描器,可以从文件、输入流、字符串中解析出基本类型值和字符串值。
注意:
1. BufferedReader不能读取基本类型输入项,它总是读取string对象。推荐使用Scanner。
四.随机访问文件
RandomAccessFile类可以在文件中(也只能操作文件)任何位置查找或写入数据。(使用"r"或"rw"在指定用于读入/读入写出 访问选项)
RandomAccessFile独立于InputStream和OutputStream类系。
getFilePointer( )
定位用
seek( )
在文件里移动用
length( )判断文件大小
skipBytes()跳过多少字节数
相关文章推荐
- JAVA核心技术学习——流与文件(3.字符集)
- JAVA核心技术学习——流与文件(1.4个抽象类)
- JAVA核心技术学习——流与文件(5.操作文件FILE)
- JAVA核心技术学习——流与文件(4.对象流与序列化)
- 高手Java核心技术学习笔记
- Java2核心技术第七版的学习笔记(三) Fundamental Programming Structures in Java(Java语言的基础)(三)
- Java2核心技术第七版的学习笔记(一):An Introduction to Java(Java的介绍)
- Java2核心技术学习
- java核心技术学习笔记8---equals()方法和hashCode()方法
- 高手Java核心技术学习笔记
- java核心技术学习笔记3---运算符与类型转换
- JAVA 核心技术卷1学习笔记(1)
- JAVA2核心技术卷1 学习笔记3 对象和类
- java核心技术学习笔记6---对象和类
- Java学习笔记——文件读取技术
- java核心技术学习笔记2---基本数据类型
- Java2核心技术学习笔记
- java实现图片浏览:java核心技术学习
- Java2核心技术学习笔记 分类: java 2009-11-29 23:54 339人阅读 评论(0) 收藏
- Java核心技术知识学习