1.字符流(以字符(char)为单位).
1.Reader
是所有的字符输入流的抽象基类
read()
read(char[] cbuf)
read(char[] cbuf, int off, int len)
子类:
FileReader :文件字符输入流
2.Writer
是所有的字符输出流的抽象基类
write(int c)
write(char[] cbuf)
write(char[] cbuf, int off, int len)
write(String str)
write(String str, int off, int len)
子类;
FileWriter:文件字符输出流
3.案例,对文本文档的复制
Reader r = new FileReader("a.txt");
Writer w = new FileWriter("a2.txt");
char[] buffer = new char[3];
int len = 0;
while((len = r.read(buffer)) != -1){
w.write(buffer,0,len);
}
w.close();
r.close();
2.缓冲流
字节缓冲流
BufferedInputStream,BufferedOutputStream
字符缓冲流
BufferedReader,BufferedWriter
BufferedReader
方法 : readLine():一次读一行.返回String
3.转换流
只有字节流转换为字符流
InputStreamReader
可以把字节输入流转换为字符输入流
OutputStreamWriter
可以把字节输出流转换为字符输出流
4.对象流
ObjectOutputStream:对象输出流
writeObject(Object obj):写出对象
ObjectinputStream:对象输入流
readObject() :读取并返会对象
1.对象的序列化:
就是把对象保存到硬盘上,或允许在网络中直接传输对象。
为了让某个类是可序列化的,该类必须实现如下两个接口之一
Serializable(常用)
Externalizable
注意:对象是可序列化,那么对象中的属性也应可序列化
如:
class Person implements Serializable{
}
Person p = new Person();
OutputStream out = new FileOutputStream("d:/obj.txt");
ObjectOutputStream oos = new ObjectOutputStream(out);
writeObject(p); //把对象写出
oos.close();
2.对象的反序列化
就是把保存到硬盘上的对象读到程序中
InputStream in = new FileInputStream("d:/obj.txt");
ObjectInputStream ois = new ObjectInputStream(in);
Object obj = ois.readObject();
System.out.println(obj);
ois.close();
5.RandomAccessFile类
在创建的时候需要mode,"rw"代表可读可写
RandomAccessFile raf = new RandomAccessFile("a.txt","rw");
* 支持对随机访问文件的读取和写入
* 提供大量的读写方法
* 方法:
* getFilePointer() :得到指针的位置
* seek(long pos) :设置指针的位置
* length() :返回此文件的长度