重学java 62.IO流 字节流 ③ 字节输入流

告别这种事情,没有道理可讲

                                —— 24.6.4

一、字节输入流的介绍以及方法的使用

1.概述:

        字节输入流 InputStream,是一个抽象类

                子类:FileInputStream

2.作用:

        读数据,将数据从硬盘上读到内存中来

3.构造:

        FileInputstream(File file)

        FileInputstream(String path)

        读文件只能读已有的文件,无法自动创建文件

4.方法

        int read() —> 一次读一个字节,返回的是读取的字节

        int read(byte[] b) —> 一次读取一个字节数组,返回的是读取的字节个数

        int read(byte[] b, int off, int len) —> 一次读取一个字节数组的一部分,返回的是读取的字节个数

        void close() —> 关闭资源

import java.io.FileInputStream;

public class Demo267FileInputStream {
    public static void main(String[] args) throws Exception {
        // method01(); // 97 98
        method02(); // a b c d e
        // FileInputstream(String path)
    }

    private static void method01() throws Exception {
        // FileInputstream(File file)
        FileInputStream fis = new FileInputStream("AllWillBest_Java\\1.txt");

        // int read() —> 一次读一个字节,返回的是读取的字节
        int data1 = fis.read();
        System.out.println(data1);

        // int read() —> 一次读一个字节,返回的是读取的字节
        int data2 = fis.read();
        System.out.println(data2);

        // int read() —> 一次读一个字节,返回的是读取的字节
        int data3 = fis.read();
        System.out.println(data3);

        // int read() —> 一次读一个字节,返回的是读取的字节
        int data4 = fis.read();
        System.out.println(data4);

        // int read() —> 一次读一个字节,返回的是读取的字节
        int data5 = fis.read();
        System.out.println(data5);

        // int read() —> 一次读一个字节,返回的是读取的字节
        int data6 = fis.read();
        System.out.println(data6);

        FileInputStream fis4 = new FileInputStream("AllWillBest_Java\\1.txt");
        int len;
        while((len = fis4.read()) != -1){
            System.out.println((char)len);
        }

        fis.close();
    }

    private static void method02() throws Exception {
        FileInputStream fis = new FileInputStream("AllWillBest_Java/1.txt");
        // 创建一个数组:byte[]
        //  1.创建的数组相当于一个临时存储区域,我们要读取的内容会临时保存到数组中然后我们再从数组中将数据获取
        //  2.数组长度定为多少,每次读取多少个,一般情况下数组长度定为1024或者1024的倍数如果剩下的字节不够数组长度了,那么就最后有多少读多少
        // int read(bytell b) —> 一次读取一个字节数组,返回的是读取的字节个数
        // void close() —> 关闭资源
        byte[] bytes = new byte[2];
        int len1 = fis.read(bytes);
        System.out.println(len1);
        System.out.println(new String(bytes,0,len1));

        int len2 = fis.read(bytes);
        System.out.println(len2);
        System.out.println(new String(bytes,0,len2));

        int len3 = fis.read(bytes);
        System.out.println(len3);
        System.out.println(new String(bytes,0,len3));

        int len4 = fis.read(bytes);
        System.out.println(len4);
        System.out.println(new String(bytes,0,len4));

        int len5 = fis.read(bytes);
        System.out.println(len5);
        fis.close();
    }
}

问题1:一个流对象,读完之后,就不要再读了;除非重新new一个新的对象

问题2:流关闭之后,流对象不能继续使用了

5.读取-1的问题

        每个文件末尾都会有一个"结束标记”,这个"结束标记"我们看不见,摸不着

        而read()方法规定,如果读到了文件的结束标记,方法直接返回-1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/679572.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

容器中运行ifconfig提示bash: ifconfig: command not found【笔记】

容器中运行ifconfig提示bash: ifconfig: command not found 这个问题是因为在容器中没有安装ifconfig命令。 在容器中安装ifconfig命令,可以使用以下命令: 对于基于Debian/Ubuntu的容器,使用以下命令: apt-get update apt-get …

Spring Boot 使用自定义注解和自定义线程池实现异步日志记录

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

leetcode739 每日温度

题目 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 输入: tempe…

探秘Android系统启动的神秘面纱

系统启动过程对于任何操作系统来说都是一个非常关键的环节,Android作为移动设备领域中占据主导地位的操作系统,其启动过程也是个值得深入研究的重点话题。本文将为您解开Android启动过程的神秘面纱,详细剖析其中的每一个步骤,并通…

vue 将echart 下载为base64图片

1 echart是页面的子组件, 2 页面有多个echart 3 将多个echart下载为base64图片 // 子组件 echart,要保存echartconst chart this.$echarts.init(this.$refs.chart, light) this.chartData chart; //保存数据,供父组件alarmReport调用(th…

专业130+总分400+四川大学951信号与系统考研经验川大电子信息与通信工程,真题,大纲,参考书。教材。

今年四川大学951信号与系统专业课130(据我所知没有140以上的今年),总分400,顺利上岸川大,回顾一下自己这一年的复习,希望自己的经历可以对大家复习有所借鉴,也是对自己的考研画上句话。专业课&a…

重庆耶非凡科技业务大盘点:这些领域你都了解吗?

重庆耶非凡科技有限公司,这家位于重庆市经开区的企业,以其独特的业务模式和专业的技术实力,赢得了业界的广泛认可。它的主要业务涵盖了选品师项目和人力RPO项目两大领域。 首先,我们不得不提的是耶非凡科技的选品师项目 在当今消费…

算法004:盛水最多的容器

这道题比较简单,使用双指针。 要求的是最大面积,对于一个水桶(水杯来说),面积的算法是固定的,就是底乘以高。 在这个题中,我们把左边的位置设为left,右边的位置设为right&#xff…

vue3 + echarts 二次开发百分比饼图

效果图&#xff1a; 安装 pnpm i echarts 公共模块组件 <divclass"pie"ref"percent"style"width: 100%; height: calc(100% - 48px)"></div> import { ref, onMounted } from vue import * as echarts from echarts const prop…

JavaEE:http请求 | 过滤器 | 同步与异步请求 | 跨域问题 | axios框架 有这一篇就够!

&#x1f4c3;HTTP请求 ▐ http超文本传输协议&#xff1a; ⦁ http超文本传输协议属于应用层协议&#xff0c;传输内容必须是超文本内容 (网页内容) ⦁ 例如在网页上点击超链接&#xff0c;提交表单&#xff0c;都可以向后端发送一个http请求 ⦁ 一次http请求中包含请求行、…

盘点哪些企业容易被ddos攻击

DDoS&#xff08;分布式拒绝服务&#xff09;攻击已成为网络安全威胁中的重要一环。本文将探讨哪些类型的企业容易成为DDoS攻击的目标&#xff0c;并提出相应的防范策略&#xff0c;帮助企业更好地保护自身网络安全。 一、电子商务平台 电子商务平台作为线上交易和支付的重要场…

Direct local .aar file dependencies are not supported when building an AAR.

最近升级了最新的AndroidStdio版本&#xff0c;然后导入之前的安卓工程 然后经过一番折腾后项目可以跑了&#xff0c;但是意外发现出release包的时候报错了&#xff0c; Direct local .aar file dependencies are not supported when building an AAR. 网上有很多解决方法&am…

鸿蒙HarmonyOS实战—如何使用Video组件播放视频

1.视频播放 鸿蒙系统中&#xff0c;关于视频播放&#xff0c;可以使用上层视频组件Video。 参数如下 src 支持file:///data/storage路径前缀的字符串&#xff0c;用于读取应用沙箱路径内的资源。需要保证目录包路径下的文件有可读权限。 说明&#xff1a;视频支持的格式是&am…

opencv-python(四)

读取图像文件 image cv2.imread(path, flag) flag&#xff1a;1. 默认值&#xff0c;依原图像读取图像&#xff0c;保留Alpha透明度通道。2.IMREAD_GRAYSCALE&#xff1a;将图像转为灰度再读取。3.IMREAD_COLOR&#xff1a;将图像转为三通道BGR彩色再读取。 可读取的图像格…

猫头虎分享已解决Bug || Error: ‘fetch‘ is not defined

原创作者&#xff1a; 猫头虎 作者微信号&#xff1a; Libin9iOak 作者公众号&#xff1a; 猫头虎技术团队 更新日期&#xff1a; 2024年6月6日 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &…

HBuildX创建uni-app项目

新建项目 输入项目名称&#xff0c;选择存放位置、项目模板、vue版本 创建成功后左边会显示项目目录 安装插件&#xff1a;工具-》插件安装&#xff0c;根据所选vue版本安装编译器 点击运行&#xff0c;选择你需要运行的地方即可

Java面试题:ArrayList底层实现原理、HashMap的实现原理、HashMap的jdk1.7和jdk1.8有什么区别

文章目录 一、List相关面试题1.1 ArrayList源码分析&#xff08;底层实现&#xff09;1.2 ArrayList底层的实现原理是什么1.3 ArrayList listnew ArrayList(10)中的list扩容几次1.4 如何实现数组和List之间的转换1.5 ArrayList 和 LinkedList 的区别是什么 二、HashMap相关面试…

[协议]TCP协议

TCP,UDP协议工作在传输层 TCP基于连接&#xff1b; UDP基于非连接 TCP三次握手 UDP:不能保证丢包&#xff0c;传输稳定性不如TCP;

【SVG 生成系列论文(十一)】如何定制化地生成 SVG 图案?Text-Guided Vector Graphics Customization

SVG 生成系列论文&#xff08;一&#xff09; 和 SVG 生成系列论文&#xff08;二&#xff09; 分别介绍了 StarVector 的大致背景和详细的模型细节。SVG 生成系列论文&#xff08;三&#xff09;和 SVG 生成系列论文&#xff08;四&#xff09;则分别介绍实验、数据集和数据增…

《2024年DDoS趋势报告》:DDoS攻击规模飙升233.33%

2023年&#xff0c;数字领域面临着分布式拒绝服务&#xff08;DDoS&#xff09;攻击的变革浪潮&#xff0c;攻击速度创纪录地达到了每秒700 Gbps和8000万数据包。这些事件跨越了从游戏到金融服务的各个行业&#xff0c;突显了DDoS是一种普遍存在的风险。 值得注意的是&#xf…