传统的IO通信:磁盘→系统→程序→socket→协议引擎
NIO:磁盘→系统→socket→协议引擎
字节流:字节流读取得都是文件中二进制数据,读取到二进制数据不会经过任何的处理。
字符流:字符流读取的数据是以字符为单位的 ,字符流也是读取文件中的二进制数据,不过会把这些二进制数据转换成我们能识别的字符。
字符流 = 字节流 + 解码
输入字节流:
——–| InputStream 所有输入字节流的基类 抽象类
————| FileInputStream 读取文件数据的输入字节流
File file = new File("D:/AAA");
//建立数据的输入通道
FileInputStream fileInputStream = new FileInputStream(file);
//建立缓冲数组配合循环读取文件的数据用来保存每次读到的字节个数
byte[] buf = new byte[1024];
//存储读取到的数据缓冲数组的长度一般是1024的倍数,因为与计算机的处理单位。理论上缓冲数组越大,效率越高
while((length = fileInputStream.read(buf))!=-1){
// read方法如果读取到了文件的末尾,那么会返回-1表示。
System.out.println(length);
System.out.print(new String(buf,0,length));
}
//关闭资源
fileInputStream.close();
资源文件一旦使用完毕应该马上释放,否则其他的程序无法对该资源文件进行其他的操作,比如未关闭删除文件会被拒绝,因为正在使用。