Java中重要基础之io流知识总结 - 极悦
首页 课程 师资 教程 报名

Java中重要基础之io流知识总结

  • 2020-05-29 15:04:14
  • 3088次 极悦

Java中IO流体系是很重要的基础,我相信一开始接触Java,很多人最头疼的就是这些了,搞不清时,真的会把自己绕进去。在程序中所有数据的传输又都是以流的方式进行的,为了能搞清楚这部分的知识,有必要重新整理一下Java基础,为以后的编程打下良好的基础。

什么是IO流?

IO指的是Input/Output,IO流:输入输出流。我们称为数据流。

在Java程序中,对于数据的输入/输出操作都是以流的方式进行的。

JDK中提供了各种各样的流类,用以获取不同种类的数据。

常见的2种IO流分类:

按流向分:

  • 输入流:程序可以从中读取数据的流
  • 输出流:程序能向其中写入数据的流

按数据传输单位分:

  • 字节流:以字节为单位传输数据的流
  • 字符流:以字符为单位传输数据的流

为了能更好的了解Java中的IO流,下面用一张图来说明:

Java中重要基础之io流知识总结

IO流的基类和分类

下面用一张表格详细讲解IO流的分类:

Java中重要基础之io流知识总结

以上流都是继承四个抽象基类:

字节输入流:InputStream字符输入流:Reader

字节输出流:OutputStream字符输出流:Writer

为了更好的学习Java流体系,下面主要先从四个抽象基类开始分析。

InputStream和OutputSteam

InputStream字节输入流:继承自InputStream的流都是用于向程序中输入数据的。

OutputStream字节输出流:继承自OutputStream的流是程序用于向外输出数据的。

下面举个例子来说,继承自这两个流的文件字节操作流FileInputStream和FileOutputStream的使用。

例子:现在有个需求是要将一份音乐文件从e:src复制到e:dest。

public static void main(String[] args) {
String srcPath = "E:\src\media.mp4";
String destDir = "E:\dest";
File destDirFile = new File(destDir);
if (!destDirFile.exists()) {
destDirFile.mkdir();
}
FileInputStream fInputStream = null;
FileOutputStream fOutputStream = null;
//从Src读:输入流
//写入dest:输出流
//数据类型:视频,只能用字节流
try {
fInputStream = new FileInputStream(srcPath);
fOutputStream = new FileOutputStream(destDirFile.getAbsolutePath()+File.separator+"cp_media.mp4");
//循环通过输入流,读取数据,边读边写
byte[] buff = new byte[100];
int len=-1;
while ((len=in.read(buff,0,buff.length))!=-1) {
//返回值:是真实读取到的字节数,如果到了流的末尾,返回-1
//通过输出流写出
fOutputStream.write(buff,0,len);//推荐使用这个方法,读到多少字节就写入多少字节
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if (fInputStream != null) {
fInputStream.close();
}
if (fOutputStream != null) {
fOutputStream.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}}

Reader 和Writer

Reader 字符输入流,继承自Reader的流都是用于向程序中输入数据的。

Writer 字符输出流,继承Writer的流都是向程序中输出的。

下面同样举个例子来说,继承自这两个流的文件字符操作流FileWriter和FileReader的使用。

例子:用FileWriter和FileReader完成文件的复制[把D盘中的Stream.txt复制到C盘的根目录下]

public static void main(String[] args) {
 File filesrc=new File("D:\iotest2\Stream.txt");
 File filedest=new File("C:\"+"copy.txt"); 
 try {
 Reader in=new FileReader(filesrc); 
 Writer out=new FileWriter(filedest);
 char[]cs=new char[1024];
 int len=-1;//实际的位置
 while((len=in.read(cs,0,cs.length))!=-1){
 out.write(cs,0,len);
 }
 out.close();
 in.close();
 } catch (IOException e) { 
 e.printStackTrace();
 }
 }

Java视频相关内容

Java IO流的分类:

以上就是极悦java培训机构的小编针对“Java中重要基础之io流知识总结”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交