java.io.OutputStream此抽象类是表示字节输出流的所有类的超类
ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream
我们使用它的实现类FileOutputStream对文件内容进行操作
java.io.InputStream此抽象类是表示字节输入流的所有类的超类
AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream
我们使用它的实现类FileInputStream对文件内容进行操作
FilterOutputStream继承于OutputStream
FilterInputStream继承于InputStream
用于扩展父类的功能,没有做任何方法的扩展
接口DataInput封装了读基本数据类型的方法
接口DataOutput封装了写基本数据类型的方法
DataOutputStream继承于FilterOutputStream,说明它扩展了父类的功能,还实现了接口DataOutput,说明它实现了对基本数据类型写的功能
DataInputStream继承于FilterInputStream
package com.part01; import java.io.DataOutputStream; import java.io.FileOutputStream; public class Demo01 { public static void main(String[] args)throws Exception { FileOutputStream fo=new FileOutputStream("d:\\iodemo.txt"); DataOutputStream doos=new DataOutputStream(fo); doos.writeInt(32); doos.writeBoolean(false); doos.writeDouble(34.56); doos.writeUTF("大家好"); doos.close(); System.out.println("OK"); } }
package com.part01; import java.io.DataInputStream; import java.io.FileInputStream; public class Demo02 { public static void main(String[] args)throws Exception { FileInputStream fi=new FileInputStream("d:\\iodemo.txt"); DataInputStream di=new DataInputStream(fi); int r1=di.readInt(); boolean r2=di.readBoolean(); double r3=di.readDouble(); String r4=di.readUTF(); int re=di.read(); System.out.println(r1); System.out.println(r2); System.out.println(r3); System.out.println(r4); System.out.println(re); } }
运行结果如下:
32
false
34.56
大家好
-1BufferedOutputStream继承于FilterOutputStream
BufferedInputStream继承于FilterInputStream
基本没有增加任何方法,但是带缓存 ,而且支持mark。
package com.part01; import java.io.BufferedOutputStream; import java.io.FileOutputStream; public class Demo03 { public static void main(String[] args) throws Exception { String str="一二三四五六七"; byte[] data=str.getBytes("utf-8");//一个汉字转三个字节 FileOutputStream fo=new FileOutputStream("d:\\iodemo.txt"); BufferedOutputStream bo=new BufferedOutputStream(fo); bo.write(data, 3, 18); bo.close(); System.out.println("OK...."); } }
运行结果:在d:\\iodemo.txt下写入二三四五六七
package com.part01; import java.io.BufferedInputStream; import java.io.FileInputStream; public class Demo04 { public static void main(String[] args)throws Exception { FileInputStream fi=new FileInputStream("d:\\iodemo.txt"); BufferedInputStream br=new BufferedInputStream(fi); byte[] data=new byte[3]; br.read(data); System.out.println(br.markSupported()); System.out.println(new String(data,"utf-8")); br.mark(3); byte[]data2=new byte[15]; int len=br.read(data2); System.out.println(new String(data2,0,len,"utf-8")); br.reset(); br.read(data); System.out.println(new String(data,"utf-8")); //二三四五六七 } }
运行结果:
true
二
三四五六七
三
ByteArrayOutputStream内存输出流,继承于OutputStream
ByteArrayInputStream内存输入流,继承于InputStream
package com.part01; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; //写到内存中去 public class Demo05 { public static void main(String[] args) throws IOException { ByteArrayOutputStream bos=new ByteArrayOutputStream(); bos.write("大家好吗?".getBytes()); bos.close(); byte[]re=bos.toByteArray();//这个方法可以得到字节数组 System.out.println(Arrays.toString(re)); } }
package com.part01;
import java.io.ByteArrayInputStream;
import java.io.IOException;
//内存输入流
public class Demo06 {
public static void main(String[] args) throws IOException
{
String str="大家好吗好不好?";
ByteArrayInputStream bi=new ByteArrayInputStream(str.getBytes());//用已存在的字节构建
byte[]buffer=new byte[512];
int len=-1;
len=bi.read(buffer);
System.out.println(new String(buffer,0,len));
}
}