您的位置:首页 > 编程语言 > Java开发

java io理解

2016-03-11 14:33 399 查看
1. File类

接口 FilenameFilter 只有一个方法accept(),我们要实现这个接口重写这个方法

 boolean
accept(File dir,String name)


          测试指定文件是否应该包含在某一文件列表中。
返回true,则文件返回到列表中

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java se