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

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

2015-01-21 22:05 766 查看
 由于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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jdk java
相关文章推荐