您的位置:首页 > 其它

字符字节流

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

结论:1、上面下划线的代表节点流,必须和指定的物理节点关联,抽象基类无法创建实例。

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的问题也可以很好的解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: