JDK核心技术卷II高级特性(原书第八版)学习笔记1——流与文件1

 由于Unicode每个字符使用了多个字节来存储信息,面向单个字节的原始流类 InputStream、OutputStream不便处理,所以抽象继承出来的Reader和Writer类专门处理基于两字节码元的Unicode字节流


  available方法检查当前可用于读入的字节数量,因为流的读写可能被阻塞。


DataInputStream和DataOutputStream 可以以二进制形式读写所有基本Java类型。


FileInputStream fin = new FileInputStream("a.txt");   某些流,如 FileInputStream从文件或 外部的位置上获取字节

DataInputStream din = new DataInputStream(fin);  其他流,如DataInputStream、PrintWriter能够将字节组封装在更有用的数据类型中。

double s = din.readDouble();


嵌套过滤器来添加多重功能。请求一个数据块并将其置于缓冲区中会显得更高效。

DataInputStream din = new DataInputStream(new BufferedInputStream(new FileInputStream("er.doc")));


FileOutputStream(File file,boolean append) 

append true, 追加输出到文件末尾,原文件内容不被删除

append false, 删除原文件后重新输出


InputStreamReader类将包含字节(用某种字符编码方式表示的字符)的输入流转换成可以产生Unicode字符的读取器。

InputStreamReder in = New InputStreamReader(new FileInputStream("fef.txt"),"GBK");


PrintWriter 以文本格式打印字符串和数字。微笑


Scanner 以文本格式读入数据



字符集

Charset cset=Charset.forName("ISO-8859-1"): //获取指定名称(不分大小写)的字符集

Set<String> aliaes = cset.alises(); //返回由别名构成的Set对象


如何编码Unicode 字符串的代码:

String  str ="fefe";

ByteBuffer buffer = cset.encode(str);

byte[] bytes=buffer.array();


解码字节序列,需要有字节缓冲区:

byte[] bytes = ...;

ByteBuffer  bbuf = ByteBuffer.wrap(bytes,offset,length);

CharBuffer cbuf=cset.decode(bbuf);

String str = cbuf.toString();






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值