java教程(1),2021春招面试

import java.io.IOException;

import java.io.InputStream;

public class changeData {

private static InputStream mIn;



public static void main(String[] args) {

    try {

        //第一步,获取文件输入流 FileInputStream 是 InputStream 的子类

        mIn = new FileInputStream("src/test.txt");

        for (;;){//循环读取数据

            //第二步:一个字节一个字节的读

            int n = mIn.read();

            //第三步:数据读完后 n值为-1 跳出循环

            if (n == -1) break;

            //打印日志 观察结果

            System.out.println("读到的数据是 ->" + n + " 剩余数据字节长度 ->" + mIn.available());

        }

    } catch (Exception e) {

        e.printStackTrace();

    }finally {

        try {

            //关闭 输入流 避免不必要的资源开销

            mIn.close();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

}




test.txt文本内容及打印结果



![](https://img-blog.csdnimg.cn/20210521185836359.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODg1Njcz,size_16,color_FFFFFF,t_70)



> 缓冲

> --



爱思考的同学肯定已经想到了,一个字节一个字节的读,读取速度很慢,所以下面我们讲一下 read()的两种重载方法。



InputStream.read(byte[] b):

作用:根据参数b的大小来读取数据

参数一:读取若干字节并填充到byte[]数组,

返回值:读取的字节数 返回 -1 表示没数据可读了

InputStream.read(byte[] b, int off, int len):

作用:根据参数b的大小来读取数据

参数一:偏移量 , 这个偏移量是对数组b来说的 即从数组b的第几个位置开始装数据

参数二:最大填充数 , 这个参数也是针对数组b来说的 即一口气装多少 , 也就是不管 b数组有多大,偏移量和最大填充数已经决定了 怎么装,装多少

返回值:读取的字节数 返回 -1 表示没数据可读了


package test;



import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;



public class changeData {



    private static InputStream mIn;



    public static void main(String[] args) {

        try {

            //规定缓冲区大小

            byte[] buffer = new byte[4];

            //第一步,获取文件输入流 FileInputStream 是 InputStream 的子类

            mIn = new FileInputStream("src/test.txt");

            for (;;){//循环读取数据

                //第二步,转入buffer中 从1号位置开始装,一口气装3个数据

                int n = mIn.read(buffer,1,3);

//                第三步:数据读完后 n值为-1 跳出循环

                if (n == -1) break;

                //打印日志 观察结果 所以对应第二步,你不能取 buffer 的0号位置数据,如果你执意要取,我只能告诉你那个值是默认的0,;因为从1号位置开始装,所以得从1号位置取

                System.out.println("读了" + n + "数据是 ->" + " 剩余数据字节长度 ->" + mIn.available() + " 读到的是 ->" + buffer[1] + buffer[2]);

            }

        } catch (Exception e) {

            e.printStackTrace();

        }finally {

            try {

                //关闭 输入流 避免不必要的资源开销

                mIn.close();

### 最后

**分享一份NDK基础开发资料**

![详解:Linux网络虚拟化技术](https://img-blog.csdnimg.cn/img_convert/0eac6825106cc16779e7f0009b95e5f8.png)

**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://codechina.csdn.net/m0_60958482/android_p7)**

**分享一份NDK基础开发资料**

[外链图片转存中...(img-KEZEkyYT-1630932355663)]

**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://codechina.csdn.net/m0_60958482/android_p7)**

分享内容包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值