前言: IO在Java中不仅仅是文件读写那么简单,也包括了 socket 网络的读写等等一切的输入输出操作。比如说 标准HTTP请求中
IO在Java中不仅仅是文件读写那么简单,也包括了 socket 网络的读写等等一切的输入输出操作。比如说 标准HTTP请求中Post的内容的读取也是一个输出的过程,等等…
对于IO,Java不仅提供了基本Input、Output相关的api,也提供了一些简化操作的Reader、Writer等api,在某些开发(涉及大量IO操作的项目)中也很重要,一般日常的开发中也会涉及(日志,临时文件的读写等)。
在这中的知识点主要有:
基本IO的体系: 包括有InputStream , OutputStream, Reader/Writer, 文件读取,各种流读取等
NIO 的概念, 具体使用方式和使用场景
那么什么是流?
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
IO流的分类
根据处理数据类型的不同分为:字符流和字节流
根据数据流向不同分为:输入流和输出流
刚刚接触io流的同学们可能不太懂输入流和输出流的概念,大家请看图:
什么时候用字符流和字节流
字符流只能对文本文件进行读取, 他比字节流对文本文件的操作效率高
字节流主要是对非文本文件(如一些媒体文件 :图片,电影,音乐等)进行操作的
注意:字节流可以对所有类型的文件进行操作。
如果用字节流操作文本文件,没有字符流操作文本文件 效率高。
下面的图是网上的流类图结构:
输入字节流:inputStream
inputStream是所有输入字节流的父类,他是一个抽象类,像BufferedInputStream和DataInputStream等都是装饰类(这也是装饰者模式的典型应用:能大大提高侠侣,增加缓冲功能,和对多数据的支持)
输出字节流:outputStream
outputStream是所有输入字节流的父类,他是一个抽象类,像BufferedOutputStream和DataOutputStream等都是装饰类(同上这也是装饰者模式的典型应用:能大大提高侠侣,增加缓冲功能,和对多数据的支持)
字符输入流:Reader
Reader 是所有的输入字符流的父类,它是一个抽象类。CharReader、StringReader 是两种基本的介质流,它们分别将Char 数组、String中读取数据。PipedReader 是从与其它线程共用的管道中读取数据。BufferedReader 很明显就是一个装饰器,它和其子类负责装饰其它Reader 对象。下面重点介绍一下inputStreamReader。
InputStreamReader 是一个连接字节流和字符流的桥梁,它将字节流转变为字符流。FileReader 可以说是一个达到此功能、常用的工具类,在其源代码中明显使用了将FileInputStream 转变为Reader 的方法。
字符输出流:Writer
Writer 是所有的输出字符流的父类,它是一个抽象类。其他类的功能同上,OutputStreamWriter 是OutputStream 到Writer 转换的桥梁。
基础知识就讲到这,下面写示例操作演示:
字节流:
/**
* 文件复制(为了方便大家观看我直接把异常抛出了)
* 字节流
* @author 小白程序员
*
*/
public class StreamTest {
public static void main(String[] args) throws IOException {
String InFilePath = "E://InFileTest.txt";// 源文件
String OutFilePath = "E://OutFileTest.txt"; // 目标文件
InputStream in = new FileInputStream(InFilePath);
OutputStream out = new FileOutputStream(OutFilePath);
System.out.println("以字节为单位读取文件内容");
int tempbyte;
// 我们把InFileTest.txt文件里的文字按照字节的方式写到OutFileTest.txt中
// 数字、字母等符号都是字符,字符只占一个字节,汉字占两个,这么读汉字会乱码
while ((tempbyte = in.read()) != -1) {
out.write(tempbyte);
}
in.close();// 流用完必须关闭
out.close();
System.out.println("文件复制完毕!!!");
}
}
字符流:
/**
* 文件复制(为了方便大家观看我直接把异常抛出了)
* 字符流
* @author 小白程序员
*
*/
public class test {
public static void main(String[] args) throws IOException {
String InFilePath = "E://InFileTest.txt";// 源文件
String OutFilePath = "E://OutFileTest.txt"; // 目标文件
BufferedReader in = new BufferedReader(new FileReader(InFilePath));
BufferedWriter out = new BufferedWriter(new FileWriter(OutFilePath));
System.out.println("以字符为单位读取文件内容");
String tempbyte = null;
// 我们把InFileTest.txt文件里的文字按照字符的方式写到OutFileTest.txt中
while ((tempbyte = in.readLine()) != null) { // 按照行读取
out.write(tempbyte);
out.newLine();// 读完一行换行
}
in.close();// 流用完必须关闭
out.close();
System.out.println("文件复制完毕!!!");
}
}
欢迎阅读Java开发培训机构分享的此篇文章希望对你有所帮助,Java开发培训班不但为你提供学习知识的机会,还为你提供就业机会;既能为你提升价值还能为你指明方向,
还能让你在学习结束成为技术大拿;项目经理会带给你实战项目经验,让你在4个月学到真正对接企业用人需求的软件开发技术,从而真正掌握自己的命运,你的薪资,你做主!
文章出自:http://qh.itpxw.cn/peixun/software/202190861.html
文章标题:Java开发培训班中IO系统指的什么?
免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员
用户级别:10
机构名称:IT培训网
联 系 人:罗老师
联系电话:13783581536
联系手机:13783581536
在线客服:
在 线 QQ:
电子邮件:
网站域名:http://www.itpxw.cn
注册时间:2016-07-18 11:07
最后登录:2024-02-20 13:02
Java定义方法的格式是什么?IT培训网小编来告诉大家。所谓方法...
大家在Java教程中会学到关于Java消息推送的知识,那么,Java消息...
常用的Java日期格式转换有哪些?IT培训网小编来告诉大家。 1...
Java创建对象数组的方法是什么?IT培训网小编来告诉大家。Ja...