Java I/O 几个重要流的应用
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