java编程思想——java IO系统
一、什么是IO
io在本质上是单个字节的移动。而流能够说是字节移动的载体和方式,它不停的向目标处移动数据。我们要做的就是依据流的方向从流中读取数据或者向流中写入数据。
二、java中支持IO操作的库类
1、依照数据类型分为两类:
(1)字节类型:InputStream和OutputStream
(2)字符类型:Writer和Reader
2、依照数据的流动方向,主要分为两类:
(1)基于磁盘操作的io接口:File
(2)基于网络的io接口:socket
三、字节流、字符流的io接口说明
字节流包含输入流InputStream和输出流OutputStream。字符流包含输入流Reader,
InputStream相关类图例如以下。仅仅列举了一级子类:
InputStream提供了一些read方法供子类继承。用来读取字节。
OutputStream相关类图例如以下:
OutputStream提供了一些write方法供子类继承,用来写入字节。
Reader相关类图例如以下:
Reader提供了一些read方法供子类继承。用来读取字符。
Writer相关类图例如以下:
Writer提供了一些write方法供子类继承,用来写入字符。
每一个字符流子类差点儿都会有一个相相应的字节流子类,两者功能一样。区别仅仅是在于操作的是字节还是字符。
比如CharArrayReader和 ByteArrayInputStream,两者都是在内存中建立数组缓冲区作为输入流,不同的仅仅是前者数组用来存放字符。每次从数组中读取一个字符;后者则是针对字节。
| ByteArrayInputStream、CharArrayReader | 为多线程的通信提供缓冲区操作功能。经常使用于读取网络中的定长数据包 |
| ByteArrayOutputStream、CharArrayWriter | 为多线程的通信提供缓冲区操作功能。经常使用于接收足够长度的数据后进行一次性写入 |
| FileInputStream、FileReader | 把文件写入内存作为输入流,实现对文件的读取操作 |
| FileOutputStream、FileWriter | 把内存中的数据作为输出流写入文件。实现对文件的写操作 |
| StringReader | 读取String的内容作为输入流 |
| StringWriter | 将数据写入一个String |
| SequenceInputStream | 将多个输入流中的数据合并为一个数据流 |
| PipedInputStream、PipedReader、PipedOutputStream、PipedWriter | 管道流。主要用于2个线程之间传递数据 |
| ObjectInputStream | 读取对象数据作为输入流,对象中的 transient 和 static 类型的成员变量不会被读取或写入 |
| ObjectOutputStream | 将数据写入对象 |
| FilterInputStream、FilterOutputStream、FilterReader、FilterWriter | 过滤流通常源和目标是其它的输入输出流,大家能够看到有众多的子类。各实用途,就不一一介绍了 |
java编程思想——java IO系统的更多相关文章
- 33.JAVA编程思想——JAVA IO File类
33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的 ...
- java编程思想-java中的并发(二)
二.共享受限资源 有了并发就可以同时做多件事情了.但是,两个或多个线程彼此互相干涉的问题也就出现了.如果不防范这种冲突,就可能发生两个线程同时试图访问同一个银行账户,或向同一个打印机打印,改变同一个值 ...
- java编程思想-java中的并发(一)
一.基本的线程机制 并发编程使我们可以将程序划分为多个分离的.独立运行的任务.通过使用多线程机制,这些独立任务中的每一个都将由执行线程来驱动. 线程模型为编程带来了便利,它简化了在单一程序中同时jia ...
- java编程思想-java中的并发(四)
五. 新类库中的构件 Java SE5的java.util.concurrent引入了大量设计用来解决并发问题的新类.学习使用它们将有助于编写出更加简单而强壮的并发程序. 1. CountDownLa ...
- java编程思想-java IO系统
一.输入和输出 编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象."流"屏蔽了实际的I/O设备中处理数据的细节. J ...
- java编程思想-java集合总结-基本概念
1.java 容器类类库的用途是"保存对象",并将其划分为两个不同的概念: 1)Collection.一个独立元素的序列,这些元素都服从一条或多条规则.List 必须按照插入的顺序 ...
- java编程思想-java中的并发(三)
三.终结任务 1. 在阻塞时终结 线程状态 一个线程可以处于以下四种状态之一: 1)新建(new):当线程被创建时,他只会短暂的处于这种状态.此时,他已经分配了必须的系统资源,并执行了初始化.此刻线程 ...
- java编程思想-java注解
注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据. 一.定义注解 注解的定义看起来很像接口的定义.事实上,与其他任何Java接口一样, ...
- java 编程思想-java运算符--曾经不太明确的
1.java 运算符 主要是逻辑运算符和按位运算符;移位运算符-name tecmint.txt 逻辑运算符:And(&&) ; OR(||);Not(!) 按位运算符:And(&am ...
随机推荐
- Java虚拟机内存详解
概述 Java虚拟机会自动管理内存,不容易出现内存泄漏和内存溢出问题.Java虚拟机会在执行过程中将管理的内存分为若干个不同的数据区域. 运行时数据区域 在jdk1.8之前的版本与1.8版本略有不同, ...
- vue 父子组件双向绑定
vue组件有2大特性: 1.全局组件和局部组件 2.父子组件的数据传递 接下来直接用demo直接看如何传值(静态传值) father.vue <template> <div> ...
- C/C++ static、extern
一.static本质作用 与static相对的关键字是auto,两者是一对.我们一般声明变量,如:int a,其实都是auto int a,只是auto省略了而已,但是static不能省略.要理解st ...
- 扩增子分析解读4去嵌合体 非细菌序列 生成代表性序列和OTU表
本节课程,需要先完成 扩增子分析解读1质控 实验设计 双端序列合并 2提取barcode 质控及样品拆分 切除扩增引物 3格式转换 去冗余 聚类 先看一下扩增子分析的整体流程,从下向上逐层分析 分 ...
- spring 实例 bean 的方式
一.使用构造器实例化: <bean id="personService" class="cn.mytest.service.impl.PersonServiceBe ...
- Python使用Flask框架,结合Highchart,搭配数据功能模块,加载 HTML 表格数据
参考链接:https://www.highcharts.com.cn/docs/data-modules 1.javascript代码 var chart = Highcharts.chart('co ...
- python3.x Day1 用户登录程序练习
训练1: 模拟登陆: 1. 用户输入帐号密码进行登陆 2. 用户信息保存在文件内 3. 用户密码输入错误三次后锁定用户 login2.py: #!/usr/bin/env python # -*- c ...
- Python-文件和数据格式化
文件的使用 >文件的类型 文件的理解:文件是数据的抽象和集合 -文件时存储在辅助存储器上的数据序列 -文件是数据存储的一种形式 -文件展现形态:文本文件和二进制文件 文本文件vs.二进制文件 - ...
- 关于python字典中文显示的处理办法
最近工作中遇到字典包含中文,显示\uxxxx的问题,怎么转换都无法输入正常的中文:{"gc": "\u4eba\u751f\u7f8e\u597d", &quo ...
- java属性的默认值
String 默认null Boolean默认false int默认0 double默认0.0 类中使用自定义类定义属性默认值:null 在定义属性的时候可以指定默认值