字节输入流【InputStream】(读文件)

news2024/12/24 3:43:00

字节输入流【InputStream】

        java.io.InputStream 抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。它定义了字节输入流的基本共性功能方法。

        public void close():

                关闭此输入流并释放与此流相关联的任何系统资源。

        public abstract int read():

                从输入流读取数据的下一个字        节。

        public int read(byte[] b):

                从输入流中读取一些字节数,并将它们存储到字节数组 b中 。(返回值是int类型,字节流读到文件末端会返回-1,表示读到文件结束;用缓冲流读会返回NULL或EOF)

        注意:close方法,当完成流的操作时,必须调用此方法,释放系统资源。

 FilelnputStream类

        java.io.fileInputStream 类是文件输入流,从文件中读取字节。

构造方法

        FileInputStream(File file):

        通过打开与实际文件的连接来创建一个 FilelnputStream ,该文件由文件系统中的 File对象 file命名。
        FileInputStream(String name):

        通过打开与实际文件的连接来创建一个 FileInputStream,该文件由文件系统中的路径名 name命名。
        当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有该文件,会抛出 FileNotFoundException 。
。 构造举例,代码如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException {
        // 使用文件名称创建流对当
        FileInputStream fis =new FileInputStream("fos.txt");
        int read = fis.read();
        System.out.println((char) read);
        read = fis.read();
        System.out.println((char) read);
        read = fis.read();
        System.out.println((char)read);
        read = fis.read();
        System.out.println((char)read);
        read = fis.read();
        System.out.println((char)read);
        // 读取到末尾,返回-1 read =fis.read();
        System.out.println( read);
        // 关闭资源
        fis.close();
    }
}

 注意:
        1.虽然读取了一个字节,但是会自动提升为int类型。
        2.流操作完毕后,必须释放系统资源,调用close方法,千万记得。

        使用字节数组读取:

                read(bytel]b) 每次读取b的长度个字节到数组中,返回读取到的有效字节个数,读取到末尾时,返回 -1 ,代码使用演示: 

        int len = 0;
        byte[] bytes = new byte[3];
        //数组长度为3
        while((len = fin.read(bytes))!=-1){
        //每次读到的长度为3,当读到的文件长度不足3时会返回-1
            String s = new String(bytes,0,len);
        // 将bytes数组从0到len长度的内容转换成String类型
            System.out.println(s);
          //此时一次输出len个字节
        }
        fin.close();

 字节流练习,图片复制(图片是用字节存放的)

        原理:

        //复制图片
        FileInputStream fin = new FileInputStream("aa.jpg");
        //通过相对路径创建输入流对象,指向aa.jpg这个图片
        FileOutputStream fout = new FileOutputStream("bb.jpg");
        //通过相对路径创建输出流对象,输出到bb这个文件里面
        byte[] bytes = new byte[1024];
        //定义一个数组,用来存读入的数据
        int len;
        //用循环将数组中的数据写到输出流对象fout里
        while ((len = fin.read(bytes) )!= -1){
            fout.write(bytes,0,len);
        }
        //记得关闭资源
        fout.close();
        fin.close();

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Telegraf

Telegraf是什么? Telegraf 是 InfluxData 公司开源的一款十分流行的指标采集软件,可以从数据库、系统和物联网传感器收集和发送度量和事件,它用Go编写,编译成一个没有外部依赖的二进制文件–需要非常少的内存,相…

数仓建模理论(一)

学习目录一、关系建模与维度建模二、维度表和事实表(重点)三、事实表类型四、维度模型分类一、关系建模与维度建模 (1)关系建模 关系建模将复杂的数据抽象为两个概念——实体和关系,并使用规范化的方式表示出来。关系…

【计算机毕业设计】73.房屋租赁系统求租合同源码

一、系统截图(需要演示视频可以私聊) 摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,房屋租赁系统当然也不能排除在外。房屋租赁系统是以实际…

Mybatis源码解析(八):插件机制

Mybatis源码系列文章 手写源码(了解源码整体流程及重要组件) Mybatis源码解析(一):环境搭建 Mybatis源码解析(二):全局配置文件的解析 Mybatis源码解析(三):映射配置文件的解析 Mybatis源码解析(四):s…

flex布局列表页(一行内容比较多,长度比较长)

一、Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局。 二、基本概念 采用 Flex 布局的元素,称为 Flex 容器(flex co…

Java开发必须掌握的运维知识 (九)-- Docker容器监控信息可视化仪表:Grafana

一、Grafana 是用来干什么的? Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring) 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视…

jdk11新特性——JShell交互性工具

目录一、jshell概述二、jshell位置三、jshell示例3.1、示例一(声明变量并赋值)3.2、示例二(输出打印内容)3.3、示例三(帮助命令)一、jshell概述 java9引入了jshell这个交互性工具,让Java也可以…

BUUCTF Misc 黑客帝国 [MRCTF2020]你能看懂音符吗 [HBNIS2018]caesar [HBNIS2018]低个头

黑客帝国 下载文件 一长串16进制,复制到在线16进制转文本 很明显是一个RAR文件,使用脚本将16进制转换成文件 import binasciihex_data这里填十六进制数据 outopen(res.rar,wb) out.write(binascii.unhexlify(hex_data)) out.close() 需要密码&#xff…

[附源码]计算机毕业设计校园疫情防范管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

# 智慧社区管理系统-核心业务管理-03投诉信息

一 后端 1:entity package com.woniu.community.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class Complaint {private int id;private int comId;private String c…

多功能跑步机外观及结构设计

目 录 摘 要 I Abstract II 第1章 绪论 1 1.1背景及意义 1 1.2国内外发展情况 2 1.3研究主要内容 3 第2章 多功能跑步机结构设计 5 2.1 传动机构设计 5 2.1.1 设计步骤及参数选择 5 2.1.2多楔带带轮结构和尺寸选择 8 2.2 电动机类型与参数的选择 10 2.2.1类型功率选择 10 2.2.2…

连连看核心算法与基本思想(附全部项目代码链接与代码详细注释)

文章目录0.说明1.基本要求2.思路分析(加入核心代码)2.1 游戏初始化局面2.2 两点是否可连2.3 游戏是否结束2.4 判断死锁3.注意事项与全部代码0.说明 对于数据结构和算法,我并不是很精通(真的很一般),因此在这里只是做一个自己的简…

以太网 TCP协议(数据交互过程、窗口机制)

2.7.1 以太网 TCP协议(数据交互过程、窗口机制) 环境介绍: 1、客户端访问FTP服务器进行下载文件,由于FTP是基于TCP协议进行工作的,所以客户端在访问FTP服务器时必然会进行建立TCP连接。 2、通过在交换机上对任意端口进…

Bootstrap5 网格系统

Bootstrap 提供了一套响应式、移动设备优先的流式网格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多 12 列。 我们也可以根据自己的需要,定义列数: 111111111111444486612 Bootstrap 5 的…

Java项目:ssm客户关系管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 客户关系管理系统主要功能包括: 系统管理: 用户管理 日志管理 权限管理 角色管理 系统信息 客户管理 我的客户 联系跟进…

音视频学习(十三)——flv详解

简介 全称FLASHVIDEO,是一种新的视频格式,主要的特点是文件小、加载速度快。 结构 flv的结构相对简单,可以通过下图来初步了解其组成: flv flv header(9字节) flv bodyflv header Signature(3字节) Version(1字节) Flags(…

rocketmq消息过滤

1、目的 消费者订阅了某个主题后,Apache RocketMQ 会将该主题中的所有消息投递给消费者。若消费者只需要关注部分消息,可通过设置过滤条件在 Apache RocketMQ 服务端进行过滤,只获取到需要关注的消息子集,避免接收到大量无效的消…

51单片机学习笔记5 流水灯实现及蜂鸣器控制

51单片机学习笔记5 流水灯实现及蜂鸣器控制一、流水灯1. 硬件电路2. 代码实现(1) 点亮一个LED的基本操作(2) 使用算术左移实现流水灯(3) 使用库文件左移函数二、蜂鸣器1. 蜂鸣器介绍2. 硬件电路原理图ULN20…

唯愿山城无恙-烟火寻常--爱摸鱼的美工(五)

-----------作者:天涯小Y 非常时期的非常生活! 今天是承上启下的一天 无论好坏,本月都收官了 洗去一身的疲惫 大脑放空,搓澡 热衷搓澡的程度,简直不像南方人 收拾一下,迎接新的开始 原本一年之中,我最爱几…

搜索与图论-DFS

文章目录一、DFS1. DFS 简介2. DFS 的实现步骤3. DFS 实际演示二、DFS 例题——排列数字具体实现1. 样例演示2. 实现思路3. 代码注解4. 实现代码三、DFS 例题—— n-皇后问题(经典)具体实现——按行进行枚举1. 样例演示2. 实现思路3. 代码注解4. 实现代码…