IO:
I: input 相对于程序输入
O: output 相对于程序输出
IO流的分类:
字符流(只能操作文本文件) 必須刷新关流
普通字符流: Reader–>FileReader read()
Wrietr-->FileWriter writer()
缓冲流: BufferedReader readline()
BufferedWriter newline()
字节流(可以操作任何类型的文件) 不用刷新
普通字节流(不用刷新):InputStream--->FileInputStream()
OutputStream---->FileOutputStream()
高效字节流(必须刷新): BufferedInputStream()
BufferedOutputStream()
FileOutputStream
成员方法:public void write(int b)
Public void write(byte[] b)
Public void write(byte[] b,int off,int len)
构造方法:(如果文件不存在则创建文件 如果文件存在则清空文件)
FileOutPutStream(String “文件路径”)
FileOutPutStream(File f)
FileOutPutStream(File f, boolean b)
Public byte[] getBytes() //将字符串转为字符数组
FileInputStream
成员方法:
Public int read() //读取一个字节
Public int read(byte[] bytes) //读取一个字节数组 返回值表示实际读取的字节长度
在GBK编码中 一个汉字在文件中占两个字节
New String(bytes,0,len) getByte()
字节数组——————————>字符串———————–>字节数组
BufferedInputStream(new FileInputStream(“ ”))
BufferedOutputStream(new FileInputStream(“ ” ))
转换流
字节流转为字符流
必须要刷新 关流
OutputStreamWrite:字节输出流转为字符输出流
构造方法:OutPutStreamWrite(OutputStream out)
OutputStreamWrite(OutputStream out,String charsename)//指定编码类型写入
InputStreamRead:字节输入流转换为字符输入流
构造方法:InputStreamRead(InputStream in)
InputStreamRead(InputStrean in,String charsetName)
转换流的作用:
1.调用方法时传入的是字符流而只有字节流的时候需要转换为字符流传入
2.解决文件的编码问题 写入时编码类型必须与读取时编码类型一直
对象的序列化 ObjectOutPutStream
将一个对象写入文件,实际是将该对象堆内存中所有二进制数据写入文件(会看不懂)
不刷新,必须关流
如果让一个类的对象实现序列化,则:
1该类要实现接口Seralizable(该接口没有抽象方法称为标记接口)当类有组合关系时 所有有关系的类都要实现该接口
2添加SerializableID
构造方法:ObjectOutputStream(OutputStream out)
成员方法:writeObject(Object obj)
对象的反序列化 ObjectInputStream
从文件中读取对象
反序列化没有能力判断文件末尾
类的成员变量不打算被序列化则在变量类型前加上transient 则打印的就是默认值
构造方法:ObjectInputStream(InputStream in)
成员方法:Object readObject()
作用:实现了多个模块共享一个对象用于网络之间的对象传输
Properties类:
无序 元素唯一性 实现了Map接口 只用来存字符串
方法:
SetProperties(String key,String value);
getProperties(Key)
stringPropertiesNames()
Lode(new FileInputStream(“ ”))//读取文件中的信息存入集合
Lode(new FileReader(“ ”))
Store(new FileWriter(“ ”))//将类中的数据写入文件
Lode(new FileOutputStream(“ ”))