java学习小记二
来源:互联网 发布:js json null空值处理 编辑:程序博客网 时间:2024/06/09 01:36
最近一直纠结于Java的IO中,刚开始看的一头雾水,各种Stream,各种Reader,各种Buffer。headache!
1,总的来说就包括InputStream 和 OutputStream 两个,具体应该用不到,都是用他们的派生类。
2,File 类的Object 可以是一个文件,也可以是一个directory/path。
3,Stream 是面向low-level的,而Reader/Writer是面向character的。
4,Whenever you want use readLine(),use BufferedReader。Other than this, DataInputStream is preferred choice。DataInputStream is offen used for getting primitives。
5,Old IO 不多说了。New IO应该说会比较常用,NIO 主要包括两个东东,非常重要,一个是channel,一个是ByteBuffer。将文件或者其它输入流都转化去Channel,对于文件用FileInputStream().getChannel(),或者FileOutputStream().getChannel(),或者RandomAccessFile().getChannel(),对于Socket 也可以用对应的方法处理成Channel。ByteBuffer主要面向bytes,主要方法是allocate()分配空间,filp()裁剪将capacity设置到limit,clear()重置,array(),hasRemaining()检查position和limit之间是否还有elements等。将channel的内容读入buffer用fc.read(buffer),将buffer写入channel用fc.write(buffer).
6,对于ByteBuffer有个static方法wrap,可以用于将某string.getBytes(),处理成byte[]。ByteBffer还是low-level的,可以用CharBffer,IntBuffer,DoubleBuffer等来抓化为易于处理的。这几个子类正常constructor时,都是Heap型的,都可以用array()方法,要是ByteBuffer使用asCharBuffer(),asIntBuffer,等转化来的,就不能用array()了。Heap型的,不会按照对应类型划分区域,每次使用时,按对应类型增加pos。而ByteBufferAs型的,就会按照对应的类型,将size划分成等大小的,每次pos+1。
7,对于CharBuffer等的,就可以用put(),get()等显示的写入或读取数据。
8,char、short 2bytes;int float 4bytes;double long 8bytes。
- java学习小记二
- android学习小记二
- Qt学习小记(二)
- java 学习小记
- java学习小记一
- java相关学习小记
- JAVA学习小记
- java ObjectInputStream学习小记
- Java学习小记1
- java学习 Controller小记
- java学习小记
- java学习小记
- SQL基础 学习小记二
- php学习小记(二)
- Makefile 学习小记(二)
- Java编程思想 学习小记
- Thinking in Java学习小记
- Java内部类学习小记
- Deep Dive: The Digital Factory Is a Work in Progress
- 在AS3中实现时钟
- 思科认证CCIE R&S考试要看的书和文档
- Akshell: 基于JavaScript和在线IDE的RAD云
- 在这里问点小问题
- java学习小记二
- 加入收藏和设为首页JQuery代码
- 50款流行安全软件的开源替代品
- 保护你的JAVA / .net 程序,终极避免被反编译方法研究
- 此处打开cmd命令行窗口
- XX语录,ZT
- 2分钟学习CSS语法结构
- MCI函数与命令
- 最棒的50个开源博客