Java:IO流概述和分类

简介: Java:IO流概述和分类

一、IO流概述

IO:输入/输出(Input/Output)


流:是一个种抽象的概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输。


IO中的流就相当与我们日常生活中的管道,我们通过管道来把水引到用户,通过管道把石油输送到大罐.同样,我们利用流来从硬盘的文件中读数据到你的程序中,利用流来写数据到硬盘的文件


IO流就是用来处理设备间数据传输问题的


常见的应用:文件复制;文件上传;文件下载

二、IO流的分类

按照数据的流向:输入流:读数据 输出流:写数据


按照数据类型来分:


字节流:字节输入流;字节输出流


字符流:字符输入流;字符输出流


一般来说,我们说的IO流的分类是按照数据类型来分的


那么这两种流都在什么情况下使用的呢?


如果数据通过Window自带的记事本软件打开,我们还可以读懂里面的内容,就使用字符流,


否则使用字节流。如果你不知道使用哪种类型的流,就使用字节流。

三、IO流理解

对于IO的理解,流这个概念十分重要。


举个简单的例子,你用壶往杯子里倒水,壶里的水不可能一下子就跑到被子里,而是需要一个过程。这个过程更像是连续的过程,源源不断进行着。


回到计算机上来,举一个计算机硬盘和内存的例子,硬盘需要传1g的数据到内存中以便处理,但是由于传输带宽等方面的限制,1g数据不可能立马就传到内存中,而是需要一点点进行的,就像从壶里往杯子里倒水一样。流这个词,生动形象说明了数据传输的过程。


另外IO操作被认为是资源,资源可能被多个程序使用,这就需要考虑资源有限的问题,于是便有了操作系统中的抢占IO。就像你用壶倒水,一般同一时刻只能倒一个杯子一样。

目录
相关文章
|
3天前
|
Java Unix Windows
|
3天前
|
网络协议 算法 Java
【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)
【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)
17 3
|
3天前
|
监控 Java
Java一分钟之-NIO:非阻塞IO操作
【5月更文挑战第14天】Java的NIO(New IO)解决了传统BIO在高并发下的低效问题,通过非阻塞方式提高性能。NIO涉及复杂的选择器和缓冲区管理,易出现线程、内存和中断处理的误区。要避免这些问题,可以使用如Netty的NIO库,谨慎设计并发策略,并建立标准异常处理。示例展示了简单NIO服务器,接收连接并发送欢迎消息。理解NIO工作原理和最佳实践,有助于构建高效网络应用。
8 2
|
3天前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
17 0
|
3天前
|
存储 缓存 Java
Java IO 流详解
Java IO 流详解
18 1
|
3天前
|
安全 Java 编译器
Java第一课——Java详细图文概述
Java第一课——Java详细图文概述
29 6
Java第一课——Java详细图文概述
|
3天前
|
存储 安全 Java
Java集合的分类有哪些?
Java中的集合就像一个容器,专门用来存储Java对象,这些对象可以是任意的数据类型,并且长度可变。这些集合类都位于java.util包中,在使用时一定要注意导包的问题,否则会出现异常。
37 10
|
3天前
|
存储 Java
Java的`java.io`包包含多种输入输出类
【5月更文挑战第2天】Java的`java.io`包包含多种输入输出类。此示例展示如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着分配一个`byte`数组存储流中的数据。通过`read()`方法读取数据,然后将字节数组转换为字符串打印。最后关闭输入流释放资源。`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
38 1
|
3天前
|
存储 Java
java IO接口(Input)用法
【5月更文挑战第1天】Java的`java.io`包包含多种输入输出类。此示例展示了如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着创建一个字节数组存储读取的数据,调用`read()`方法将文件内容填充至数组。然后将字节数组转换为字符串并打印,最后关闭输入流。注意,`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
22 2
|
3天前
|
安全 Java API
Java 8新特性概述及其对编程实践的影响
【4月更文挑战第30天】本文将详细讨论Java 8的新特性,包括Lambda表达式、Stream API以及Optional类等,并探讨这些新特性如何改变了Java编程的实践。我们将通过实例代码展示这些新特性的用法,并分析其对提高代码可读性和编写效率的影响。