1. File类
接口 FilenameFilter 只有一个方法accept(),我们要实现这个接口重写这个方法
File包含删除,创建文件等方法,File中包含目录和文件,用时候可查API
File.delete()可删除文件和空目录
2. 按结构分为:字节流:最底层是InputStream和OutputStream
字符流:最底层是Reader和Writer
读入流 输出流
节点流 过滤流: 过滤流用来包装节点流
最基本的输入流我们使用FileInputStream
3. 字节流的顶层是InputStream和OutputStream抽象类
字节流常用的有ByteArrayInputStream, BufferedInputStream,FileInputStream
装饰模式用FilterInputStream对节点流进行包装
4,。 字符流: 字符流的顶层是Writer和Reader抽象类
InputStreamReader :An InputStreamReader is a bridge from byte streams to character streams:
5. RandomAccessFile : 实现了DataOutputStream和DataInputStream,他的构造器可以使文件以只读或者读写的方式打开
随机访问文件,既可读取,又可写出(但是注意写入之后的位置位于末尾,如果要读取,要调用方法使他回到开头)
6. 序列化: 将对象转换为字节流保存起来,并在以后还原回来
反序列化:将对象在磁盘文件中返回回来的过程
一个对象若想实例化,他的类必须实现java.io.Serializable接口或者他的子接口,这个接口中没有任何方法,类似于Annotation接口,标示着这个类实现了这个接口,就可以被序列化
只能序列化对象的非静态成员变量,静态成员变量和方法不可被序列化。如果一个序列化对象的成员变量也是一个对象,这个对象的成员变量也会被序列化,如果一个成员变量不可序列化,则序列化失败,会抛出一个NotSerializable异常。我们可以用transient标记这个引用,则对象仍然可被序列化
ObjectInputStream和ObjectOutputStream
序列化时候如果想被特殊处理,要自己实现这两个方法,这两个方法不属于任何类,比较特殊。
-
Classes that require special handling during the serialization and deserialization process must implement special methods with these exact signatures:
private void writeObject(java.io.ObjectOutputStream out) throws IOException private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException;