Java基础之IO流

1.解决什么问题?

设备与设备之间的数据传输问题...

设备: 硬盘,内存,屏幕,网络

 

2. IO流的分类

按流的方向: 输入流 输出流

按流的数据类型: 字节流 字符流

按功能 节点流 过滤流

 

 

InputStream /OutputStream (抽象类

字节流(二进制)

 Reader /Writer(抽象类)

字符流

备注

节点流

FileInputStream

FileOutputStream

FileReader

FileWriter

对文件进行读写

PipedInputStream

PipedOutputStream

PipedReader

PipedWriter

在线程之间传输数据

PrintSteam

PintWriter

标准输出

过滤流(包装流)

(需要节点流的包装)

ObjectInputStream

ObjectOutputStream

 

对对象进行序列化和反序列化(二进制)

BufferedInputStream

BufferedOutputStream

BufferedReader

BufferedWriter

具有缓存功能

桥流

 

InputStreamReader

OutputStreamWriter

把字节流转成字符流

 

new ObjectInputStream(new FileInputStream("e:/a.txt"));

new BufferedReader( new InputStreamReadernew FileInputStream("e:/a.txt"));

 

3. IO流常用的API

3.1|-InputStream

int read(); //一次读取一个字节。返回读取的字节数。返回-1 表示结束

read(byte[] datas): 一次读取多个字节。返回读取的字节数。返回-1 表示结束

read(byte[] datas, int start, int length): 缓存字节数组。从指定位置(start)读取,读取length长度的字节数组(datas),返回读取的字节数。返回-1 表示结束

skip(int n): 跳过n个字节数据

close(): 关闭流资源

3.1.1|-FileInputStream 文件进行读写

3.1.2|-ObjectInputStream: readObject() : 读取一个对象。对象反序列化

3.1.3|-BufferedInputStream 

 

3.2|-OutputStream

write(int data) :  一次写一个字节。传递int,取的int的低八位,其他24位忽略。

writer(byte[] datas): 一次写出多个字节。

writer(byte[] datas, int start, int length): 缓冲字节数组,从指定位置(start),写出length长度的字节数组(datas)。

3.2.1|-FileOutputStream  

3.2.2|-ObjectOutputStream wirteObject(): 写出一个对象。对象的序列化

 

3.3|-Reader

int read(); 一次读取一个字符

read(char[] datas): 一次读取多个字符

read(char[] datas, int start, int length)  读取字符数组的某个部分

3.3.1|-BufferedReader: readLine():  一次读取一行。以\r(回车) \n(换行)判断一行的结束

获取用户输入的数据:

a)new BufferedReader(new InputStreamReader(System.in)); br.readLine();获取用户输入的一行

b)Scanner scan = new Scanner();scan.nextLine();  获取用户输入的一行。jdk5.0之后出现的


3.4|-Writer

writer(int data) : 一次写出一个字符

writer(char[] datas) :一次写出多个字符

writer( char[] datas,int start,int length) :写出字符数组的某个部分

writer(String str): 一次写出一个字符串,因为String太常用了!!

3.4.1|-BufferedWriter

newLine()  写出一个换行符

 

4.编码问题:

字节流不会出现编码问题,字符流才会有编码问题。

new FileWriter("e:/word");

字符流-> 字节流(编码)  查询码表

new FileReader("e:/word”

字节流-> 字符流(解码)  查询码表

 

编码或解码的码表不一致,可能会出现中文乱码问题。

注意:

1)编码和解码的码表必须一致!!!

2)拷贝文件,必须使用字节流,避免编码和解码的过程导致中文乱码问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值