字符字节流
2016-03-06 16:35
363 查看
分类 | 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
抽象基类 | InputStream | OutputStream | Reader | Writer |
访问文件 | FileInputStream | FileOutputStream | FileReader | |
访问数组 | ByteArrayInputStream | CharArrayReader | ||
访问管道 | PipedInputStream | PipedReader | ||
访问字符串 | StringReader | |||
缓冲流 | BufferedInputStream | BufferedReader | ||
转换流 | InputStreamReader | OutputStreamWriter | ||
对象流 | ObjectInputStream | |||
抽象基类 | FilterInputStream | FilterReader | ||
打印流 | PrintStream | |||
推回输入流 | PushbackInputStream | PushbackReader | ||
特殊流 | DataInputStream |
2、如果输入输出的是文本内容,则应该用字符流,如果是二进制的则应该使用字节流
3、字节流用byte[] bbur=new byte[]然后调用字节流进行封装read(bbuf);字符流则用char[] c=new char[32]数组进行封装
4、字节流可以通过InputStreamReader或OutputStreamWriter进行转换成相应的字符流
5、注意上面字节流虽然读取的是byte但是实际用read方法读入的是int类型,然后调用write方法的时候把int又转换成byte读取,OutputStream的write()方法参数可以是字节或者int,但往往write会截取8个二进制位(0-255),多余的位就抛弃。read的时候把byte强制转型为int,write的时候相反,主要是因为字节流如果读取的是byte的话那么八个字节如果是1111 1111的话表示-1,因为-1代表字节读取完全,所以会出错,假如向上转型为int则-1表示为0000.....(24个0)11111111,表示的是255,即读取的数据只能是0-255,不存在-1冲突的问题。
6、同样在字符流里面的char能表示0-65535,而int的数据宽度同样包含char,选取一个在不在char范围而又在int的范围表示文件结束(选了-1),所以read用int类型,然后-1的问题也可以很好的解决。
相关文章推荐
- BZOJ-1477 青蛙的约会 拓展欧几里德
- [Elasticsearch] 部分匹配 (三) - 查询期间的即时搜索
- 随机生成三十个四则运算算式(包含真分数)
- python GUI编程 glade+GTK+py2exe 生成exe文件
- kafka->spark->streaming->mysql(scala)实时数据处理示例
- 7.6实战练习第一题
- jQuery5~7章笔记 和 1~3章的复习笔记
- hdu1016枚举递归-经典DFS-简单回溯入门
- Windows服务器上使用bat定时执行php
- 错误svn: The repository at 'svn://xxxxx' has uuid 'XXXX', but the WC has 'XXXX'“
- 构建之法:略读
- poj 1700 Crossing River
- 自我介绍
- demo07
- 第一天
- java设计优化之单例模式
- 一步一步学ROP之Android ARM 32位篇
- Linux进程时间片的分配(调度策略和参数)
- 实现自动生成30道四则运算题目
- 3.3