Java编程思想——标准 I / O

将Syetem.out转换成PrintWriter

标准I/O重定向: 控制台信息量大,滚动快,查看困难

    setIn(InputStream) setOut(...) setErr(...)

新I/O库,提高速度; 方式:使用的结构更接近操作系统执行I/O的方式:通道和缓冲器。

    通道:包含数据的矿藏;缓冲器:运送数据的车; 屏蔽底层信息,封装耗时,适用于大型文件操作。

    唯一与通道交互缓冲器:ByteBuffer; FileInputStream\FileOutStream\RandomAccessFile 被改造产生FileChannel。

文件加锁(针对大文件)

    tryLock(long position, long size, loolean shared)

    lock(long position, long size, boolean shared)

    //起始位置,大小,共享锁(视OS而定,有的有,有点没有),可通过FileLock.isShared()查询部分加锁后文件的变化。

压缩:1. 文件大,通过压缩改变大小;2.文件多,通过压缩改变文件数量; 控制台操作 传入文件名参数。

    CheckedInputStream(或Output) 进行校验

    DeflaterOutputStream 压缩基类:GZipOutput/ZipOutputStream 压缩成GZIP/ZIP,Input 为解压。

    GZIP接口简单,适合单个数据流压缩。

    ZIP适合进行多文件保存,使用接口,ZipEntry(); putNextEntry();

        ZipOutputStream.setComment(String); 压缩文件备注

档案文件 .JARs 跨平台压缩文件

    通过在Jar文件的manifest(文件清单)中定义一个main类就可以创建一个可执行的Jar文件。

对象序列化  对象需要实现Serializable接口 (基于二进制自动处理)    

    create OutputStream object;  

    wrap in  a ObjectOutputStream object

    use writeObject() to serializable

    send to OutputStream

    在读的时候需要转型!(序列化:将实现S接口的对象转化为一个字节序列,并可以在以后恢复为原对象)

    特殊情况可以通过Enternalizable接口代替S实现控制。

    增添两个方法:writeExternal() 和 readExternal()

寻找类 需要有class环境 才能还原序列化

transient(瞬时)关键字  表示敏感信息,关闭序列化,不会被记录。

posted @ 2019-05-23 09:47  Comet_Fei  阅读(109)  评论(0编辑  收藏  举报