IO流的原理和分类

image.png

##1.io流的划分

1.按照流的流向不同:输入流,输出流

2.按照流中的数据单位不同:字节流,字符流(纯文本文件使用字符流,其他文件使用字节流)

3.按照流的角色不同:节点流,处理流(流直接作用于文件上是节点流(4个),除此之外是处理流)

2.从硬盘中读入一个文件,要求此文件一定存在,若不存在,报FileNotFoundExpection

3.从程序中输出一个文件到夹岸畔,此文件可以不存在,若不存在,则船舰一个实现输出,若存在,则将存在的文件覆盖

4.真正开发时,就用缓冲流来代替节点流

5.主要最后关闭相应的流,先关闭输出流,在关闭输入流,将此操作放入finally

6.其他的流:

1.转换流:实现字节流于字符流之间的转换

InputStreamReader:输入时,实现字节流到字符流的转换,提高操作效率(前提是,数据是文本文件)=====》解码:字节数组----》字符串

OutputStreamwriter:输出时,实现字符流到字节流的转换,编码:字符串----》字符数组

2.标准的输入输出流

System.in        System.out

3.打印流(都是输出流)PrintStream (处理字节)     PrintWriter(处理字符)

可以使用System.setOut(PrintStream p)重写设置一下输出位置。PrintStream p = new PrintStream(new FileOutputStream(“hello.txt”),true);

4.数据流(处理基本数据类型,String类,字节数组)

DataInputStream    DataOutputStream

5.对象流(用来处理对象的)

对象的序列化机制:允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流永久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。当其他程序获取了这种二进制流,就可以恢复成员来的Java对象

ObjectInputStream (Object readObject)   ObjectOutputStream(void writeObject(Object obj))

如何创建流的对象:ObjectOutputStream oos = new ObjectOutputStream(new File(“person.txt”));

ObjectInputStream oIs = new ObjectInputStream(new File(“person.txt”));

    实现序列化机制的对象对应类的要求:①要求实现Serializable接口②同样要求类的所有属性也必须实现Serializable接口

?要给类提供一个序列版本号:private static final long serialVersionUID;

④属性声明为sratic 或transient的,不可以实现序列化

6.随机存取文件流:RandomAccessFile

6.1既可以充当一个输入流,又可以充当一个输出流:public RandomAccessFile(File file,String mode);

6.2支持从文件的开头读取、写入,也支持从任意位置的读取、写入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椰子奶糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值