黑马程序员_java IO流

---------- android培训java培训java学习型技术博客、期待与您交流! ------------

.IO

1.概念

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

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

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

流按流向分为两种:输入流 程序读取数据的管道

  输出流 程序写出数据的管道

流按操作类型分为两种:字节流与字符流。  字节流可以操作任何数据,字符流只能操作纯字符数据,比较方便。

2.字节流的抽象父类:

InputStream OutputStream

     字符流的抽象父类:

Reader , Writer

3.IO流程序书写

使用前,导入IO包中的类

使用时,进行IO异常处理

使用后,释放资源

.字节流

1.读取文件

创建FileInputStream对象指定一个文件文件必须存在不存在则会抛出FileNotFoundException

使用read()方法可以从文件中读取一个字节如果读取到文件末尾会读到-1

读取结束后需要释放资源调用close()方法关闭输入流

2.写出文件

创建FileOutputStream对象指定一个文件文件不存在会创建新文件存在则清空原内容如果需要追加在构造函数中传入true.

使用write()方法可以向文件写出一个字节.

写出结束后同样需要调用close()

3.拷贝文件

可以从文件中逐个字节读取逐个字节写出但这样做效率非常低

我们可以定义一个数组作为缓冲区一次读取多个字节装入数组然后再一次性把数组中的字节写出

4.常用方法

InputStream:

read() 读取一个字节

read(byte[]) 读取若干(数组长度)字节

available() 获取可读的字节数

skip(int) 跳过若干字节

close() 关闭流释放资源

OutputStream:

write(int) 写出一个字节

write(byte[]) 写出数组中的所有字节

close() 关闭流释放资源

5.BufferedInputStream

BufferedInputStream内置了一个缓冲区(数组)

BufferedInputStream中读取一次时

BufferedInputStream会一次性从文件中读取8192存在缓冲区中返回给程序一个

程序再次读取时就不用找文件了直接从缓冲区中获取

直到缓冲区中所有的都被使用过才重新从文件中读取8192

6.BufferedOutputStream

BufferedOutputStream也内置了一个缓冲区(数组)

程序向流中写出字节时不会直接写到文件先写到缓冲区中

直到缓冲区写满, BufferedOutputStream才会把缓冲区中的数据一次性写到文件里.

.字符流

1.字符流是什么

字符流是可以直接读写字符的IO

字节流只能读写字节如果要读取字符就要先读取到字节数据然后转为字符如果要写出字符需要把字符转为字节再写出.

2.FileReader, FileWriter

FileReader类的read()方法可以按照字符大小读取

FileWriter类的write()方法可以自动把字符转为字节写出

3.什么情况下使用字符流

字符流也可以拷贝文本文件但不推荐使用因为读取时会把字节转为字符写出时还要把字符转回字节.

程序需要读取一段文本或者需要写出一段文本的时候可以使用字符流

4.使用指定的码表读取字符

FileReader是使用默认码表读取文件如果需要使用指定码表读取那么可以使用InputStreamReader

FileWriter是使用默认码表写出文件如果需要使用指定码表写出那么可以使用OutputStreamWriter

5.带缓冲的字符流

BufferedReaderread()方法读取字符时会一次读取若干字符到缓冲区然后逐个返回给程序降低读取文件的次数提高效率

BufferedWriterwrite()方法写出字符时会先写到缓冲区缓冲区写满时才会写到文件降低写文件的次数提高效率

BufferedReaderreadLine()方法可以读取一行字符(不包含换行符号)

BufferedWriternewLine()可以输出一个跨平台的换行符号

6.LineNumberReader

LineNumberReaderBufferedReader的子类具有相同的功能并且可以统计行号

调用getLineNumber()方法可以获取当前行号

调用setLineNumber()方法可以设置当前行号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值