IO流概述

一、IO流概述

1.概述

IO流用来处理设备之间的数据传输

Java对数据的操作是通过流的方式

Java用于操作流的类都在IO包中

2.分类

①按流向分类

  • 输入流
  • 输出流

②操作类型

  • 字节流:可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
  • 字符流:只能操作纯字符数据,比较方便。

3.常用父类

①字节流

  • InputStream
  • OutputStream

②字符流

  • Reader
  • Writer

4.IO流体系结构图

5.程序书写

  • 使用前,导入IO包中的类
  • 使用时,进行IO异常处理
  • 使用后,释放资源(关闭连接的通道)

 二、FileInputStream

1.构造函数

FileInputStream(File file)
          通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
FileInputStream(String name)
          通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。

2.read()方法

 intread()
          从此输入流中读取一个数据字节。

注:返回值为int型,会抛出IOException异常

FileInputStream fis = new FileInputStream("xxx.txt");   //创建流对象
int b;
while((b = fis.read()) != -1) {
   System.out.println(b);
}

fis.close();

对于返回类型int:

通常下是下一个数据字节;如果已到达文件末尾,则返回 -1

read()方法读取的是一个字节,为什么返回是int,而不是byte?

答:

因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte,有可能在读到中间的时候遇到111111111

由于1111111是byte类型的-1,程序遇到-1就会停止,后面的数据就无法读取,所以用int类型接收,如果11111111会在其前面补上24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型

三、FileOutputStream

1.构造方法

FileOutputStream(File file)
          创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(String name)
          创建一个向具有指定名称的文件中写入数据的输出文件流。
FileOutputStream(File file, boolean append)
          创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(String name, boolean append)
          创建一个向具有指定 name 的文件中写入数据的输出文件流。

如果文件不存在,则自动创建。

如果文件存在,前两者会重写文件中的内容;后两者可以通过设置append为true,进行追加方式写

FileOutputStream fos = new FileOutputStream("bbb.txt");	

FileOutputStream fos = new FileOutputStream("bbb.txt",true);	

2.write()方法

 voidwrite(int b)
          将指定字节写入此文件输出流。
FileOutputStream fos = new FileOutputStream("yyy.txt");    //创建字节输出流对象,如果没有就自动创建一个
fos.write(97);          //虽然写出的是一个int数,但是到文件上的是一个字节,会自动去除前三个8位
fos.write(98);
fos.write(99);
fos.write(100);
fos.close();

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值