java io理解

1. File类


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


 booleanaccept(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;
    














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值