IO(二)字节流

IO分为输入流:通过程序读取磁盘中的文件。输出流:通过程序将数据写入磁盘中。

还可以通过操作内容来划分,分为字节流和字符流。

字节流又分为字节输入流和字节输出流,字节流又被称为万能流可以操作任何文件。

字符流又分为字符输入流和字符输出流,字符流只能操作文本文件。

1.字节输入流

InputStream是一个抽象类,又四个常用的实现类。 

public abstract class InputStream implements Closeable

 InputStream实现了Closeable接口,说明它是一个物理资源,需要关闭,放在try 。。。with。。。resources里面。

1.1常用方法 

 int available();返回输入流里的有效字节数。

int read()无参;一次读一个字节,返回值:1.读取到的数据(ASCII码值) 2.  -1 此时表示输入流中的数据读完。

int read(byte[ ] bytes)一次读bytes.length()个字节,返回值: 1.读取到的有效字节个数

2. 读到末尾时返回 -1。

int read(byte[ ] bytes,int off,int len),一次读取bytes.length();个字节,把读取到的长度为len的数据从索引为off处放入数组中,返回值 :1.读取到的有效字节个数,2.  -1 读到末尾。

read的有参方法,读取到的数据保存在数组bytes中。

想把bytes中的内容输出用Arrays.toString();想把bytes内容转字符串,用String构造方法。

流类似与迭代器,当你读取流里面的数据后,里面的有效字节就减少多少。

 

 

文件里有五个字节数据,数据保存在流里后,先读取一个字节,输出是k,当此时输出流中有效字节个数时,是4而不是5. 

 

1.2常用子类 

1.FileInputStream磁盘文件字节输入流

读取文件数据,文件必须存在。

1.1 构造方法:FileInputStream(File file);

                        FileInputStream(String name);文件路径

2.字节输出流

 输出流的字类自带缓冲区,需要手动将缓冲区的数据刷到文件中去。

2.1常用方法 

void write(int b);//参数b是ASCII码

void write(byte[] bytes);

void write(byte[] bytes,int off,int len);

2.2常用子类

FileOutputStream(File file);

FileOutputStream(File file,boolean append);//append默认值是false,表示每写一次覆盖,true表示拼接。

参数也可以是文件路径字符串。

 3.高效字节流

 底层自带缓冲区。 byte[ 8192].具备了普通字符流不具备的功能。

读一个,读到缓冲区中等到缓冲区满了以后再全部写到文件中。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值