java -io

 一、java流总计约40个相关的接口,类

1、按照流向分,可以分为输入流,输出流

2、按照操作单元分,可以分为字节流,字符流

3、按流的角色划分可以分为节点流,处理流

4、InputStream : 所有字节输入流的基类, Reader :所有字符输入流的基类 ; 均为抽象类

OutputStream: 所有字节输出流的基类,Writer: 所有字符输出流的基类

5、字节流,字符流的区别

            a、读写单位不同,字节流已字节为单位(8bit),而字符流以字符为单位,根据码表映射字符,一次可以读多个字节

            b、处理对象不同,字节流能处理所有类型的数据,如图片,avi等,而字符流只能用来处理字符类型的数据

            c、字节流: 一次读入或读出是8位二进制,通过字节的形式一个字节一个字节,或者字节数组的形式,可以操作一切文件。

package IO;

import java.io.*;

public class IOTEST_02 {
    public static void main(String[] args) {
        //创建源
        File file = new File("dest.txt");
        //选择流
        try{
            InputStream in =  new FileInputStream(file);
            //读取操作
            int temp;
            while((temp = in.read())!=-1){
                System.out.print((char)temp);
            }
            //释放资源

        }catch (FileNotFoundException e){
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }


}
package IO;

import java.io.*;

public class IOTEST {
    public static void main(String[] args) {
        //创建源
        File file = new File("dest.txt");
        //选择流
        OutputStream outStream = null;
        String msg = "IO,TEST";
        byte[] datas = msg.getBytes(); //字符串到字节数组的过程(编码的过程)
        try {
            outStream = new FileOutputStream(file,true);  //第二个参数为可追加的意思
            outStream.write(datas,0,datas.length);
            outStream.flush(); //刷新数据,避免存在于缓存中
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                outStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

处理流的功能:

 增加缓冲,已提升性能;

B|IO   blocking,io 阻塞式io

N|IO   non-blocking io 非阻塞式io  Channel ,Selector Buffer

A|IO  Asynchronous io  异步非阻塞io   异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。AIO 是异步IO的缩写,虽然 NIO 在网络操作中,提供了非阻塞的方法,但是 NIO 的 IO 行为还是同步的。对于 NIO 来说,我们的业务线程是在 IO 操作准备好时,得到通知,接着就由这个线程自行进行 IO 操作,IO操作本身是同步的。查阅网上相关资料,我发现就目前来说 AIO 的应用还不是很广泛,Netty 之前也尝试使用过 AIO,不过又放弃了。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值