先看一段百度上的解释:

当然:如果你看不懂,那么你只需要记住下面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
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. 代替jquery $.post 跨域提交数据的N种形式
  2. Atitit 编程语言知识点tech tree v2 attilax大总结
  3. 第24天 runtime
  4. Paragon NTFS for Mac® Yosemite - 免费下载
  5. 数论 UVA 10943
  6. Android的Handler与Activity线程同步
  7. (转)SQLSERVER表分区的介绍(二)
  8. js基础例子
  9. VS2008快捷键_大全
  10. JavaSE学习总结第23天_多线程1
  11. php中的foreach函数
  12. Sass初学者超强十分钟入门
  13. C#设计模式之十八中介者模式(Mediator Pattern)【行为型】
  14. 谈谈java中的线程(初级概念)
  15. Windows Defender Service 是选择Windows 10系统的最大障碍!
  16. HTTP简述
  17. qnx spi 学习笔记
  18. 性能测试六:jmeter进阶之Cookie与header管理器
  19. spring学习(03)之bean实例化的三种方式
  20. hdu3746 Cyclic Nacklace KMP

热门文章

  1. linux 下调用wps 注意
  2. MVC-Session
  3. Linux命令——killall 、kill 、pkill、xkill
  4. sqlalchemy.exc.CompileError: (in table 'user', column 'username'): VARCHAR requires a length on dialect mysql
  5. Go 性能分析之案例一
  6. springboot整合freemarker模板引擎后在页面获取basePath绝对路径
  7. 2星|项立刚《5G时代》:资料堆砌和一些假想设想,信息浓度太低
  8. python BeautifulSoup4解析网页
  9. python中函数的定义、返回值以及参数的简要介绍
  10. 洛谷P1972 HH的项链【树状数组】