IO流之字节输入输出流

流是一连串流动的数据(字节、字符),以先进先出的方式发送的信息的通道中

输入流

数据从源数据源流入程序的过程称为输入流。可以理解为从源数据源读取数据到程序的过程

输出流

数据从程序流出到目的地的过程称为输出流。可以理解为把数据从程序写入目的地的过程

流的分类:

这里我们介绍的是字节流

字节输入流:InputStream

InputStream 是所有字节输入流的抽象父类,提供了

read 读取一个字节

read(byte[] buf) 读取一定量的字节到缓冲区数组 buf中

FileInputStream 文件字节输入流,专门用于从文件中读取字节到程序内存中

public static void main(String[] args) throws IOException {        
    File file=new File("D:\\111\\a.txt");
      //创建管道
    FileInputStream in=new FileInputStream(file);
    //循环读取一个字节
    int i;
    StringBuilder sb=new StringBuilder();
    while ((i=in.read())!=-1) {
        sb.append((char)i);
    }
    System.out.println(sb);
    in.close();
    //循环读取多个字节 (先读到缓冲区)
    byte []buf=new byte[5]; //与每次读取一个字节的区别:可以设置读取的长度
    int len;
    StringBuilder sb2=new StringBuilder();
    while ((len=in.read(buf))!=-1) {
        String str=new String(buf,0,len);
        sb2.append(str);
        System.out.println(sb2);
    }
    in.close();
    }

 字节输出流:OutputStream

OutputStream 是所有字节输出流的抽象父类,提供了

write() 写入一个字节

write(byte[] buf) 写入一定量的字节到输出流

 FileOutputStream 文件字节输出流,专门用于从内存中写入字节到文件中

public static void main(String[] args) throws IOException {        
    File file=new File("D:\\111\\a.txt");
    //管道
     FileOutputStream out=new FileOutputStream(file);
     //一次写入多个字节(字符数组或者字符串)
     String str="nihao zhongguo";
     byte[]buf=str.getBytes();
     out.write(buf);
     //也可以用不同的编码格式写入
     byte[]buf2=str.getBytes("utf8");
     out.write(buf2);
     out.close();
    }

注意:(1)字符串在写入时一定存在编码格式问题;

            (2)使用utf8编码格式写入文件时,如果不含中文,win系统会造成误判;

            (3)使用字节流写入写出时,向管道中写一个字节,该字节立即写入文件。

总结:

InputStream/OutputStream 用于字节的读写。主要用于读取二进制文件(图片、音频、视频),也可以读取文件性文件

猜你喜欢

转载自www.cnblogs.com/zhangxiong-tianxiadiyi/p/10821984.html