• java 20


     字节输入流操作步骤:
      A:创建字节输入流对象
      B:调用read()方法读取数据,并把数据显示在控制台
      C:释放资源

    步骤A、C 略过,说步骤B

       读取数据的方式
         A:int read():一次读取一个字节
         B:int read(byte[] b):一次读取一个字节数组

    要想进行字节输入流的操作,我得先创建一个文件,并用字节输出流输出内容到这个文件里面:

    1 //首先我创建一个txt文件,并输出内容
    2         File file = new File("a.txt");
    3         
    4         //用字节输出流输出数据
    5         FileOutputStream out = new FileOutputStream(file);
    6             out.write("java IO".getBytes());
    7             out.close();

    读取数据的方式A:int read():一次读取一个字节

    int by = fis.read();
    System.out.println(by);//这里输出的会是j的ASCII码‘106’
    System.out.println((char) by);//所以要进行类型转换,输出‘j’,因为每次读取一个字节,都会进行转换类型,所以如果是汉字,那么转换结果我们看不懂

    因为这个方式只是读取一个字节,所以如果接着写下去,它会输出下一个字节,相当于添加了个next在前面。

    直到你读取到内容最后,没有内容可读取了,就会返回“-1”。所以,我们可以使用循环来一次性把里面的内容输出:

    int by = 0; 
    while((by = in.read()) != -1){//当返回的是-1时,代表后面没有内容了,就跳出这个循环。
    System.out.print((char)by);

    读取数据的方式B:int read(byte[] b):一次读取一个字节数组  

    数组的长度一般是1024或者1024的整数倍

    这个方法的返回值其实是实际读取的字节个数。同样,这个方法若是返回值为“-1”,则代表后面没有数据

    1 byte[] bys = new byte[1024];//1024的整数倍
    2 int len = 0;//存储读取的实际长度
    3 while ((len = in.read(bys)) != -1) {
    4 System.out.print(new String(bys, 0, len));//打印这个数组的所有内容
    5 }

    注意:以上方法为了方便,都是把异常抛出。记得,一定要释放资源

    xxx.close();
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    Python基础:28正则表达式
    Remove Duplicates from Sorted Array
    Reverse Nodes in k-Group
    Merge k Sorted Lists
    Generate Parentheses
    Container With Most Water
    Regular Expression Matching
    Median of Two Sorted Arrays
    sql 子查询
    linux安装服务器
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5923466.html
Copyright © 2020-2023  润新知