NIO与IO流
1 public static void main(String[] args) throws IOException { 2 //创建RandomAccessFile源文件 3 RandomAccessFile rabsrc = new RandomAccessFile("mm.png","rw"); 4 //获取源文件的Channel 5 FileChannel srcChannel = rabsrc.getChannel(); 6 //目标文件 7 RandomAccessFile radTarget = new RandomAccessFile("D:\\download\\java\\mm.png","rw"); 8 //生成目标文件的Channel通道 9 FileChannel fc = radTarget.getChannel(); 10 //调用transferTo 11 assert false; 12 long transferTo = srcChannel.transferTo(0,srcChannel.size(),fc); 13 if(transferTo >0){ 14 System.out.println("复制成功"); 15 } 16 rabsrc.close(); 17 srcChannel.close(); 18 radTarget.close(); 19 fc.close(); 20 }
| 区别 | Stream | Channel |
| 支持异步 | 不支持 | 支持 |
| 是否可双向传输数据 | 不能,只能单向 | 可以,既可以从通道读取数据,也可以向通道写入数据 |
| 是否结合Buffer使用 | 不能 | 必须结合Buffer使用 |
| 性能 | 较低 |
较高
|
字符流与字节流的区别?
1、字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。
2、字节流默认不使用缓冲区;字符流使用缓冲区。
3、字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。
简要说明什么是NIO(New I/O)
标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入通道也类似。

浙公网安备 33010602011771号