IO流
IO流
以流的方式进行输入输出。
IO流的分类:
- 按照流的流向分,可以分为输入流和输出流;
- 按照操作单元划分,可以划分为字节流和字符流;
- 按照流的角色划分为节点流和处理流。
Java 的 I/O 大概可以分成以下几类:
- 磁盘操作:File
- 字节操作:InputStream 和 OutputStream
- 字符操作:Reader 和 Writer
- 对象操作:Serializable
- 网络操作:Socket
- 新的输入/输出:NIO
1.磁盘操作 File
2.文件复制
public static void copyFile(String src, String dist) throws IOException {
    FileInputStream in = new FileInputStream(src);
    FileOutputStream out = new FileOutputStream(dist);
    byte[] buffer = new byte[20 * 1024];
    int cnt;
    // read() 最多读取 buffer.length 个字节
    // 返回的是实际读取的个数
    // 返回 -1 的时候表示读到 eof,即文件尾
    while ((cnt = in.read(buffer, 0, buffer.length)) != -1) {
        out.write(buffer, 0, cnt);
    }
    in.close();
    out.close();
}
3.字符操作
编码与解码:
编码就是把字符转换为字节,而解码是把字节重新组合成字符。
- InputStreamReader 实现从字节流解码成字符流;
- OutputStreamWriter 实现字符流编码成为字节流
4.NIO
是面向缓冲区的
NIO核心组件简单介绍:Channels(通道)、Buffers、Selectors(选择器)
Java NIO 之 Buffer(缓冲区):
发送给一个通道的所有数据都必须首先放到缓冲区中,不会直接对通道进行读写数据,而是要先经过缓冲区。
缓冲区实质上是一个数组,但它不仅仅是一个数组。缓冲区提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程
三个属性:
- capacity:最大容量;
- position:当前已经读写的字节数;
- limit:还可以读写的字节数。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号