Java I/O 几个重要流的应用

IO流程图

Java  I/O 几个重要流的应用

 掌握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();
     }
 }

运行结果如下

Java  I/O 几个重要流的应用

三、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());
     }
 }

Java  I/O 几个重要流的应用

四、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));
     }
 }

Java  I/O 几个重要流的应用

打印出来是damin所对应的系统底层源码

五、ObjectInputStream 和 ObjectoutputStream

六、BufferedReader 和 BufferedWriter

相关推荐