java中的IO模型,磁盘IO、网络IO

        在日常的工作当中, IO主要涉及两个方面: 文件IO(磁盘IO) 和网络IO. 本文主要是剖析一下Java中文件IO的实现方式.

一、磁盘IO:

        在 Java 编程中,磁盘 IO (Input and Output) 是指与硬盘或其他外部存储设备进行数据交互的过程。

要了解磁盘IO首先要了解java.io中的相关的类其中 File 和 FileReader 是常用的类;

public static void main(String[] args) {
     File file = new File("path/to/file.txt");
     try (FileReader reader = new FileReader(file)) {
         int character;
         while ((character = reader.read()) != -1) {
             System.out.print((char) character);
         }
     } catch (IOException e) {
         e.printStackTrace();
     }
}

        上面的示例中,首先创建了一个 File 对象来表示要读取的文件。然后,使用 FileReader 类来创建一个文件读取器,并在 try-with-resources 语句中使用它来读取文件的内容。通过调用 read() 方法,可以逐个字符地读取文件的内容,并将其打印到控制台。

1.常见的磁盘IO对象

        

标题

2.文件操作注意事项

        文件路径:在读取或写入文件之前,我们需要准确地指定文件的路径。可以是绝对路径或相对路径。如果指定的文件不存在,Java 将尝试创建该文件。
        文件关闭:为了释放资源并确保文件的完整性,我们应该在操作完成后关闭文件。可以使用 try-with-resources 语句来自动关闭文件。
        异常处理:在进行文件 IO 操作时,可能会发生各种异常,如文件不存在、权限不足等。因此,我们应该用合适的异常处理机制来处理这些异常,以便在出现错误时能够进行适当的处理。

二、网络IO模型:

I/O模型:I/O模型就是用什么样的通道进行数据的发送和接受,很大程度上决定了程序通信的性能

        BIO同步阻塞IO:同步且阻塞(传统阻塞性),服务器实现模式为一个连接一个服务器,即客户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。

                缺点:BIO的缺点是客户端一直在连接服务器,服务器会为每一个客户端开辟一个线程对客户端处理,但有时客户端不是一直对服务器进行IO操作的,所以这样会导致服务器阻塞,进而对服务器产生很多不必要的线程开销,资源浪费

        NIO同步非阻塞IO:同步且阻塞(传统阻塞性),服务器实现模式为一个连接一个服务器,即客户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。

                优点:由于客户端不是一直对服务器进行IO操作的,所以通过Selector选择器进行轮询,均匀分配到需要对服务器进行IO操作的客户端,这样就利用了客户端闲置的时间来节省服务器内存的消耗

        AIO异步非阻塞IO: 异步非阻塞,AIO引入异步通道的概念,采用了Proactor模式,简化了程序编写,有效的请求才启动线程,它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间较长的应用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值