JAVA I/O读书笔记
来源:互联网 发布:文字图片编辑软件 编辑:程序博客网 时间:2024/05/17 14:24
关键字:流,字节,字符,通道,缓冲区,持久化,序列化,交互,标准I/O,压缩
旧I/O包
字节流读写,字符流读写(请先分清字节与字符的差别)。
区别:后者更快,但某些东西只能用字节读写(大概取决于它的数据存储方式)
区分:Reader、Wirter结尾是字符流,Stream是字节流。JAVA针对各种类型读写做有专用类,例如:File~ String~ Buffer~ 注意带缓冲的往往读写效率更快一些(原因很简单,CPU为什么有缓存就是原因)
新I/O包
新I/O包有了很大的变化,提出了两个全新的概念:通道(channel),缓冲区,文件映射,效率提高了不少(到底快了多少,没验证过)。
所有类型的缓冲区(int、char等)底层都是ByteBuffer,一个固定大小的字节数组,它甚至支持改变字节的编码顺序(大端or小端)。
文件映射允许你将文件的某部分映射到缓冲区,这也表示了你可以对文件部分加锁,这使得多线程(进程)同时对一个文件进行读写操作成为可能。
序列化
序列化是一种轻量级的数据持久化技术,对于序列化来说,数据就是对象(万物皆对象不是吗)。
序列化会将对象转成字节序列放在某处,以便发送或存储。
序列化对于通信和保持对象的状态非常有用。
值得一提的是JAVA序列化会将指定对象所覆盖的对象网络全部序列化(通过引用去找到这些对象)。
Serializable与Externalizable
Serializable仅是一个标记接口,意为这个接口标记的对象要被序列化(默认为全部)即自动序列化。
Externalizable接口必须实现两个方法(读和写),这意味着必须手动选择对象内部的哪些东西应该被序列化。
transient关键字:表示这个引用的对象无需序列化,与Serializable接口连用。
标准I/O
System.in
System.out
System.err
后两者就是一个PrintStream(自动包装),前者必须手动包装成类。
JAVA也支持对压缩文件的读写操作。
- JAVA I/O读书笔记
- Java IO 新I/O Java编程思想读书笔记
- java编程思想读书笔记-第十一章 java I/O系统
- java编程思想读书笔记 第十八章 java I/O系统(第四篇 新I/O)
- Thinking in java 4th Edition 读书笔记-I/O(1)
- Thinking in java 4th Edition 读书笔记-I/O(2)
- Thinking in java 4th Edition 读书笔记-I/O(3)
- Thinking in java 4th Edition 读书笔记-I/O(4)
- Thinking in java 4th Edition 读书笔记-I/O(5)
- Thinking in java 4th Edition 读书笔记-I/O(6)
- Thinking in java读书笔记-I/O部分(二):流
- APUE读书笔记-高级I/O
- 【Perl读书笔记】简单I\O
- APUE读书笔记-文件I/O
- 【读书笔记】同步设备I/O与异步设备I/O
- Java I/O系统----------- 标准I/O
- Socket Java I/O Socket I/O
- JAVA I/O
- mysql5.7以下自定义函数解析json
- 递归实现:一个数的各位数字之和、n^k、字符串逆序
- 垂直进度条VerticalProgressBar的实现
- Hadoop学习五:hdfs federation
- 镁光MICRON 512M AS4C32M16SM-7TIN/MT48LC32M16A2P-75 IT:C Alliance延续生命周期!
- JAVA I/O读书笔记
- Fisher Vector Encoding
- java从控制台输入数值之System.in.read()
- web.xml 中的listener、 filter、servlet 加载顺序及其详解(转)
- Nginx探索三
- 欢迎使用CSDN-markdown编辑器
- struts2 笔记 1
- STM32f103 双串口配置和中断
- 国富论