编程爱好者联盟 2016-11-08
IO流程图

掌握13个Io流
一、FileInputStream 和 FileoutputStream
FileInputStream:文件的读取
public class readers
{
public static void main(String[] args) throws Exception
{
File file = new File("F:\\java\\workspace\\Fanshe\\src\\com\\cyg\\fanshe.java");//读取文件
FileInputStream fi = new FileInputStream(file);//创建字节流,打开该 文件
byte[] b = new byte[fi.available()];//fi.available 可以获取文件占多少字节
int a = -1;
while((a= fi.read(b))!= -1)//判断文件是否到达文件末尾
{
//System.out.println(new String(b));
}
System.out.println(new String(b));
//关闭流
fi.close();
}
} FileoutputStream:文件的写入
public class output
{
public static void main(String[] args) throws Exception
{
File file = new File("F:\\a.txt");
FileOutputStream out = new FileOutputStream(file);
out.write("abmin".getBytes());
out.flush();//清楚缓存
out.close();//关闭流
}
} 二、BufferedInputStream 和 BufferedOutputStream
BufferedInputStream 是一个缓冲流
作用:为另一个输入流添加一些功能,即缓冲输入以及支持 mark (标记)和 reset 重置方法的能力,是通过一个内部缓冲区数组实现的。
public class buffertream
{
public static void main(String[] args) throws Exception
{
FileInputStream in = new FileInputStream("E:\\win10 64\\vmware.log");
BufferedInputStream bu = new BufferedInputStream(in);
FileOutputStream out = new FileOutputStream("E:\\a.txt");
BufferedOutputStream bo = new BufferedOutputStream(out);
byte[] b = new byte[1024];
int a = bu.read(b);
while(a != -1)
{
//System.out.println(Arrays.toString(b));
bo.write(b, 0, a);
a = bu.read(b);
}
in.close();
bu.close();
bo.flush();
out.close();
bo.close();
}
} 运行结果如下

三、DataOutputStream 和 DataInputStream
是一个数据输入流 它继承FilterInputStream,用来装饰其他输入流
public class adtastream
{
public static void main(String[] args) throws Exception
{
FileOutputStream out = new FileOutputStream("E:\\b.txt");
DataOutputStream dot = new DataOutputStream(out);//过滤流必须要有一个节点流
//写入数据
dot.writeInt(10);
dot.writeBytes("admin");
dot.writeChar('a');
dot.writeBoolean(true);
out.flush();
out.close();
dot.close();
FileInputStream in = new FileInputStream("E:\\b.txt");
DataInputStream di = new DataInputStream(in);
//读取数据的时候要和写入的顺序一样 不然破坏结构
System.out.println(di.readInt());
System.out.println(di.readByte());
System.out.println(di.readChar());
System.out.println(di.readBoolean());
}
} 
四、ByteArrayInputStream 和 ByteArrayOutputStream
ByteArrayInputStream 专门用来读取内存中的数据
public class bytestream
{
public static void main(String[] args) throws Exception
{
ByteArrayOutputStream out = new ByteArrayOutputStream();
String str = "admin";
out.write(str.getBytes());
byte [] b = new byte[200];
ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes());//ByteArrayInputStream: 专门用来从内从中读取数据的流
in.read(b);
System.out.println(Arrays.toString(b));
}
} 
打印出来是damin所对应的系统底层源码
五、ObjectInputStream 和 ObjectoutputStream
六、BufferedReader 和 BufferedWriter