JAVA核心技术学习——流与文件(2.组合流过滤器)


概要:流分别具有单独的功能,将不同的流组装套一起以实现复杂的功能。


一.字节的输出输出:(自己总结的分类)

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()跳过多少字节数


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值