您的位置:首页 > 编程语言 > Java开发

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()跳过多少字节数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: