IO流
1.IO概述
**概述:**用于设备间数据传输的操作
分类:
1.流向
输入流:读取操作
输出流:写出操作
2.数据类型
字节流
字节输入流
字节输出流
字符流
字符输入流
字符输出流
注意:
1.如果文件用记事本打开,内容能够读懂,就用字符流,读不懂就用字节流。实在不知道用什么流的话就用字节流。
2.FileOutputStream 字节输出流
操作步骤:
1. 创建字节流对象
FileOutputStream fos = new FileOutputStream(“fos.txt”);
2.调用write()
fos.write(“Hello”.getBytes());
3.释放资源
fos.close
注意:
1.如何换行,如何在文件中追加内容
3.FileInputStream 字节输入流
操作步骤:
1.创建字节流对象
FileInputStream fis = new FileInputStream(“fos.txt”);
2.调用read()方法
//方式1:一次读取一个字节
int content = 0 ;
while((content = fis.read())!=-1){
System.out.println((char)content)
}
//方式2:一次读取一个字节数组
byte[] bytes = new byte[1024];
int len = 0 ;
while((len=fis.read(bytes))!=-1){
System.out.println(new String(bytes,0,len))
}
3.释放资源
fis.close
4.字节缓冲流
BufferedOutputStream
BufferedInputStream
5.字符流
5.1 字符转换流
- 字符流 = 字节流 + 编码表
- 编码表:ASCII ,GBK,GB2312,UTF-8
5.2 OutputStreamWriter
OutputStreamWriter(OutputStream os):没有指定编码集,就采用默认编码集:UTF-8
OutputStreamWriter(OutputStream os , String charsetName )指定编码集
5.3 InputStreamReader
InputStreamWriter(OutputStream os):没有指定编码集,就采用默认编码集:UTF-8
InputStreamWriter(OutputStream os , String charsetName )指定编码集
5.4 字符流
Writer
FileWriter
Reader
FileReader
6.标准输入输出流
in:标准输入流—inputStream
out:标准输出流—PrintStream
7.打印流
字节打印流–PrintStream
字符打印流–PrintWriter
特点:
1.只负责输出数据,不负责读取数据
2.它有自己特有的方法
8.序列化流d
**序列化流:**把对象按照流的方式存入到文件中或在网络中传输。 对象----》流数据-ObjectOutputStream
**反序列化流:**把文件中的流数据或网络传输中的流数据还原成对象。 流数据----》对象-ObjectInputStream
如何实现序列化:
让被序列化的对象所属的类实现序列化接口。这个接口是一个标记接口。
注意
UID:如果你不固定UID
,你每次修改类文件时,都会相应的生成新的UID
,这样你就需要重新执行对象的序列化和反序列化操作。
**transient:**不想被序列化的属性可以用它来修饰
6.Properties类
1.它是一个集合类,HashTable的一个子类。它的数据存储类似于Map集合,并且它的key和value都是String.
2.特有方法
public Object setProperty(String key,String value):添加元素
public String getProperty(String key):根据键获取值
public Set<String> stringPropertyNames():获取键集合
3.与IO流结合使用 的方法
public void load(Reader reader):将文件中的数据写入到集合中----指定数据源
public void store(Writer writer,String comments):将集合中的数据写入到文件中---指定目的地