什么是IO流
先看一段百度上的解释:

当然:如果你看不懂,那么你只需要记住下面3句话.
1.
(1).我们知道,每个人家里喝的水都是从自来水厂来的,自来水厂的水又是从水源地来的,
(2).水是通过水管来的。
(3).那么这当中的水流,便可以理解为IO流。
2. 那么JAVA中的IO流呢;

(1).在java中,java就是自来水厂,水源地就是源,家就是目的
(2).//对于自来水厂当做参照物来说,从水源地流到我自来水厂的水,是从外面进来的,那么水是输入进来的。(输入)
从自来水厂到家的水,是从自来水厂流出的(输出)。
对于java程序来说,也是一样的,从源地到我java中的流,便是输入流(InputStream),而从我java中流出的便是输出流(OutputStream)
(3).那么你已经知道什么是输入流(InputStream)和输出流(OutputStream)了。
3.下面再看一幅图,缓冲区

(1).当我们需要水的时候,那么一个储水池能够更好的满足我们,能够让我们想要水就有水。提高的水到效率
(2).java中的这个储水池叫做缓冲区,(Buffered?)一个用于特定基本类型数据的容器。
那么这个(问号)?是什么意思呢?
我们知道储水池有很多种类型的,那么java中的缓冲区自然也有很多种类型的,例如以下最常用的

我们已经知道的InputStream是输入流,那么BufferedInputStream就是输入流的缓冲区了;
同样,那么OutputStream是输出流,那么BufferedOutputStream就是输出流的缓冲区了;
4.转换流

(1).同样的 ,java中的转换流,相当于过滤器,是一种对数据进行编码,改变格式的存储;如下:
可以将字符以指定编码格式存储。
可以对文本数据指定编码格式来解读
指定编码表的动作由构造函数完成
(2).分为InputStreamReader OutputStreamWriter
InputStreamReader
使用: InputStreamReader isr = new InputStreamReader(is, "gbk");
OutputStreamWriter
使用: OutputStreamWriter osw = new OutputStreamWriter(os, "ISO-8859-1");
IO流的分类:
介绍几个最主要的;分别是字符流,字节流,转换流。

(1).字节流

首先:字节流可划分为两类 输入流InputStream 输出流OutputStream
对于java来说:当对文件的读取的时候,使用FileInputStream;
对于java来说:当对文件的输出的时候。使用FileOutputStream;

(2).字符流
以下就是字符流的详细:
字符流是字节流的类似。
1.字符流分为 输入流 输出流

首先:字符流可划分为两类 输入流Reader 输出流Writer
对于java来说:当对文件的读取的时候,使用FileReader ;
对于java来说:当对文件的输出的时候。使用FileWriter;
如下,完成一个在f盘下的r.txt文件,再复制到f盘下的rrrr.txt;一个文件的复制,并改名;
(1)使用时先创建: new FileReader( 此处为String类型的需要读入数据文件地址 );
(2)创建一个缓冲区(缓冲区的创建能够提高文件的读取效率)
(3)使用时先创建: new FileWriter;( 此处为String类型的需要输出数据文件地址 );
(4).创建一个缓冲区(缓冲区的创建能够提高文件的读取效率)
(5).数据的读取:创建一个byte类型的数组,至于数组的长度建议为1024的倍数;
(6).数据的写入
(7).流的刷新与关闭:对于初学者记住,先刷新,后关闭。 而关闭的顺序,简单来讲你可以全部关闭,不会出错,
public class CopyDemo4 {
public static void main(String[] args) {
FileReader fr = null;
BufferedReader br = null;
FileWriter fw = null;
BufferedWriter bw = null;
try {
fr = new FileReader("f://rrrr.txt"); //创建输入流
br = new BufferedReader(fr);//创建输入流缓冲区
fw = new FileWriter("f://ww.txt");//创建输出流
bw = new BufferedWriter(fw);//创建输出流缓冲区
String readLine = null;
while ((readLine = br.readLine()) != null) {//数据的复制
bw.write(readLine);
bw.newLine();
bw.flush(); //刷新
}
} catch (IOException e) {//try catch异常
e.printStackTrace();
}
finally {
try {
if (fr != null) {
fr.close(); //流的关闭
}
if (br != null) {
br.close();
}
if (fw != null) {
fw.close();
}
if (bw != null) {
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
(3).转换流

(1).分类 两类
(2).使用
1.先创建输入流对象
InputStream is = new FileInputStream("e://a.txt");
2.创建转换流对象
输入流对象, 读出的编码
InputStreamReader isr = new InputStreamReader(is, "gbk");
3.创建输出流对象
OutputStream os = new FileOutputStream("d://asd.txt");
4.创建转换流对象
输 出流对象, 输出的编码
OutputStreamWriter osw = new OutputStreamWriter(os,"ISO-8859-1");
以上就是IO流的简单介绍
---------------------
作者:litGrey
来源:CSDN
原文:https://blog.csdn.net/luchenh/article/details/79050105
版权声明:本文为博主原创文章,转载请附上博文链接!
什么是IO流的更多相关文章
- Java基础之IO流
很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...
- Java中IO流,输入输出流概述与总结
总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...
- Java:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
- java IO流详解
流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- IO流总结
IO流的作用:用于设备和设备之间的数据传输. IO流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象. IO流的分类: 按照操作数据的类型分为两种: 字节流和字符流. 按 ...
- IO流
流的概念和作用 学习JavaIO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特 ...
- Java IO流学习总结
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- 揭开Java IO流中的flush()的神秘面纱
大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...
- java IO流 之 其他流
一.内存操作流(ByteArrayInputStream.ByteArrayOutputStream) (一). public class ByteArrayInputStream extends ...
- java IO流 之 字符流
字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...
随机推荐
- webpack4 + ejs 构建多页应用
目录结构 ├─build webpack配置目录 │ ├─plugins.js │ ├─rules.js │ ├─transfromAssets.js //简单的一个插件,处理路径问题 │ └─web ...
- TR-银行主数据相关BAPI
BAPI_BANKDETAIL_CREATE FI01:BAPI_BANK_CREATE FI12:BAPI_HOUSE_BANK_REPLICATE 1011 Business Object Ban ...
- iOS退出APP
强制退出有四种: exit(); abort(); assert(); 主动制造一个崩溃: exit() 1.附加了关闭打开文件与返回状态码给执行环境,并调用你用atexit注册的返回函数: 2.警告 ...
- Linux安全:Linux如何防止木马
(一)解答战略 去企业面试时是有多位竞争者的,因此要注意答题的维度和高度,一定要直接秒杀竞争者,搞定高薪offer. (二)解答战术 因为Linux下的木马常常是恶意者通过Web的上传目录的方式来上传 ...
- MVC-Cache-1.输出缓存(Cache:[1].输出缓存2.应用程序缓存)
缓存前提概念: 1.使用缓存的目的就是为提供网站性能,减轻对数据库的压力,提高访问的速度. 2.如果使用缓存不当,比不使用缓存造成的影响更恶劣(缓存数据的更新不及时.缓存过多等). 3..net MV ...
- Docker基础理论整理(精简)
目录 一.什么是docker,docker的概念 二.docker中的镜像 三.docker中的容器 四.docker中的仓库 五.docker的网络通信 bridge模式 host模式 contai ...
- 跨域访问支持(Spring Boot、Nginx、浏览器)
原文:http://www.itmuch.com/work/cors/ 最近家中事多,好久没有写点啥了.一时间竟然不知从何说起.先说下最近家里发生的事情吧: 老爸肺气肿住院: 老妈甲状腺囊肿 儿子喘息 ...
- Vim使用技巧(0) -- 博主的vim配置
vim ~/.vimrc "插入模式时 光标的上下左右移动 inoremap <C-l> <Right> inoremap <C-h> <Left& ...
- Java中的经典算法之快速排序(Quick Sort)
Java中的经典算法之快速排序(Quick Sort) 快速排序的思想 基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对 ...
- 【胡搞的不能AC的题解,暴力搜索一发博弈问题】1995 三子棋 - 51Nod
1995 三子棋 题目来源: syu校赛 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 原题链接: https://www.51nod.com/onlineJudge/ ...