DAY20 I/O流

IO流
IO流用来处理JVM内存和外部设备之间的数据传递,JAVA通过流(STREAM)完成数据传输

IO流的分类

  1. 数据传输的方向:输入流,输出流
  2. 流中传输的数据内容:
    字节流(以字节为单位的01二进制数据),操作一切类型数据,但操作数据不方便;
    字符流(字符数据);即文本数据,用文本编辑器打开还能认识。

IO流常用基类
字节流

 字节输入流:InputStream类(抽象类)
 字节输出流:OutputStream类(抽象类)

字符流

字符输入流:Reader(抽象类)
字符输出流:Writer(抽象类)

这四个类派生出的子类都以父类名作为后缀

OutputStream
构造方法
FileOutputStream(File file) 使用File对象表示目标文件
FileOutputStream(String name) 使用文件路径字符串表示目标问津
1.建立通道:流对象闯创建好,即通道建立好

OutputStream out1 = new FileOutputStream("a.txt")
-------------
File file = new File("a.txt");
OutputStream out2 = new FileOutputStream(file)

创建字节输出流时

1.JVM会首先到操作系统中找目标文件是否存在,若不存在,创建文件;若存在,
JVM会首先清空目标文件,从文件开头开始写入数据
2.创建FileOutputStream
3.创建数据传输通道

2.写入数据(写入数据后要关闭流)

public void write(int b)写入单个字节
public void write(byte[] b)写入整个字节数组
public void write (byte[] b,int off,int len)
将字节数据从偏移量off开始的len个字节写入	

实现追加写入
FileOutputStream(File file,boolean appnd)
FileOutputStream(String name,boolean appnd)
若第二个参数为true,则追加写入
I/O流操作的异常处理
write异常 IOexception、FileNotFoundException
close异常IOException查看问题
TIPs
windows中,/r/n是换行符
linux或mac os中,/n是换行符


InputStream
构造方法

 FileInputStream(File file)  
 FileInputStream(String name)

创建该类对象时,JVM找到不做任何处理,找不到抛出异常FileNoFoundException
读操作

int read(int b)读取一个字节,若末尾返回-1
int read(byte[] b)实际开发给1024的整数倍,返回实际读取的字节数
int read (byte[] b,int off,int len)从字节数组的第off个位置开始填充,
向后填充len个数据,返回实际读取的字节数据

Bufferstream
BufferedOutputStream(OutputStream out)创建一个新的缓冲输出流,已将数据写入指定的底层输出流。
BufferedInputStream(InputStream in)创建一个BufferedInputStream并保存其参数,即输入流in以便将来使用。

创建缓冲字节输入流
InputStream in = new FileInputStream("d:\\a.txt")
InputStream bis = new BufferedInputStream(in);
创建缓冲字节输出流
OutputStream out = new FileOutputStream("e:\\b.txt")
OutputStream bos = new BufferedOutputStream(out);

对于缓冲流而言,只需要关闭缓冲流即可,缓冲流会自动关闭底层字节流。
**附buffer图**
flush()刷新此输出流并强制写出所有缓冲的输出字节
注:缓冲流的close方法会调用一次flush再关闭流
关于利用缓冲流实现文件的追加写入
保证缓冲输出流包装的这个底层FileOutputStream对象,必须是通过一下方式创建FileOutputStream(String filePath,boolean append)
在创建FileOutputStream对象的第二个参数传递true。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值