Java中IO流体系是很重要的基础,我相信一开始接触Java,很多人最头疼的就是这些了,搞不清时,真的会把自己绕进去。在程序中所有数据的传输又都是以流的方式进行的,为了能搞清楚这部分的知识,有必要重新整理一下Java基础,为以后的编程打下良好的基础。
IO指的是Input/Output,IO流:输入输出流。我们称为数据流。
在Java程序中,对于数据的输入/输出操作都是以流的方式进行的。
JDK中提供了各种各样的流类,用以获取不同种类的数据。
常见的2种IO流分类:
按流向分:
按数据传输单位分:
为了能更好的了解Java中的IO流,下面用一张图来说明:
下面用一张表格详细讲解IO流的分类:
以上流都是继承四个抽象基类:
字节输入流:InputStream字符输入流:Reader
字节输出流:OutputStream字符输出流:Writer
为了更好的学习Java流体系,下面主要先从四个抽象基类开始分析。
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 字符输入流,继承自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大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习