课程名称:JAVA输入输出流
课程章节:第4章 字节流
课程讲师: Cedar
课程内容:
IO流(输入流、输出流)
字节流、字符流
1)字节流InputStream、OutputStream
InputStream抽象了应用程序读取数据的方式
OutputStream抽象了应用程序写出数据的方式
2)EOF = End,读到-1就读到结尾
3)输入流基本方法
int b = in.read();//读取一个字节无符号填充到int低8位。-1是EOF
in.read(byte[] buf)
in.read(byte[] buf,int start,int size)
4)输出流基本方法
out.write(int b);//写出一个byte到流,b的低8位
out.write(byte[] buf)//将buf字节数组都写入到流
out.write(byte[] buf,int start,int size)//字节数组buf从start位置开始写size长度的字节到流
5)FileInputStream具体实现了在文件上读取数据
FileInputStream in = new FileInputStream(fileName);
byte[] buf = new byte[20 * 1024]; //字节数足够大时
int bytes = in.read(buf,0,buf.length);
byte[] buf = new byte[8 * 1024]; //字节数较小时
6)FileOutputStream具体实现了向文件中写出byte数据的方法
FileOutputStream out = new FileOutputStream(fileName); //如果文件不存在则直接创建,如果存在则删除后创建
out.write('A'); //写出了A的低8位
int a = 10; //write只能写8位,写一个int需要写4次
out.write(a >>> 24);
out.write(a >>> 16);
out.write(a >>> 8);
out.write(a);
7)DataOutputStream、DataInputStream
对流功能的扩展,可以更加方便的读取int,long,字符等类型数据,
DataOutputStream
writeInt()\writeDouble()\writeUTF()
DataOutputStream dos = new DataOutputStream(new FileOutputStream(fileName));
dos.writeInt(10);
dos.writeDouble(10.5);
dos.writeUTF("中国"); //utf-8编码写出
dos.writeChars("中国"); //utf-16be编码写出
dos.close;
DataInputStream
DataInputStream dis = new DataInputStream(new FileInputStream(fileName));
int i = dis.readInt();
long l = dis.readLong();
8)BufferedInputStream&BufferedOutputStream
提供了带缓冲区的操作,提高了IO的性能。
FileOutputStream--->write()方法,相当于一滴一滴地把水转移过去
DataOutputStream--->writeXXX()方法方便一些,相当于一瓢一瓢地把水转移过去
BufferedOutputStream--->write()方法更方便一些,相当于一瓢一瓢先放入桶中,再从桶中倒至缸内
课程收获:
本次课程了解了文件流、数据流和缓冲流三种类,以及它们的性能对比,对日常的文件上传下载很有帮助,期待后续更多实践应用。