zoukankan      html  css  js  c++  java
  • 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 用于字节的读写。主要用于读取二进制文件(图片、音频、视频),也可以读取文件性文件

  • 相关阅读:
    sentinel.conf样例
    哨兵模式java实例
    哨兵模式启动redis
    华为笔试:直角三角形个数
    leetcode 337. 打家劫舍iii
    leetcode 494. 目标数
    leetcode 394. 字符串解码
    leetcode 128. 最长连续子序列
    链表快排
    leetcode 877. 石子游戏
  • 原文地址:https://www.cnblogs.com/zhangxiong-tianxiadiyi/p/10821984.html
Copyright © 2011-2022 走看看