InputStream

2023-11-07

/*
        在java中InputStream是字节输入流,用来将文件中的数据读取到java程序中。
        InputStream是所有字节输入流的顶层父类,是一个抽象类。如果要用,需要使用子类。

        最常用的子类:FileInputStream。

        构造方法:
        FileInputStream​(File file): 传递一个File类型的文件
        FileInputStream​(String name): 传递一个String类型的文件路径

        其他方法:
        int read​(): 从文件中读取一个字节数的数据。并返回读取到的这个字节。 如果读取结束,返回的是-1.
        int read​(byte[] b): 一次读取一个字节数组,输入流会把读取到的内容放入到这个字节数组中,并返回读取到的个数, 如果读取结束返回-1.
        void close​()

        使用步骤:
        1. 创建一个FileInputStream流对象,绑定一个数据源文件。
        2. 调用read方法读取数据。
        3. 释放资源

        注意: 这种方式不能读取中文,一个中文占多个字节,此时一次读取一个字节会把中文拆开读。
        */
public class Demo01InputStream {
    public static void main(String[] args) throws IOException {
        //创建一个FileinputStream对象,并绑定一个数据源文件
        // 如果文件不存在,则会抛出异常(File not fount excep)
        FileInputStream fis = new FileInputStream("E:\\masm5\\aaa.txt");
        //调用read方法读取数据
        // int read​(): 从文件中读取一个字节数的数据。并返回读取到的这个字节。 如果读取结束,返回的是-1.
        int i;
        while ((i = fis.read()) != -1) {
           /*
                条件做了下面的事情
                1. 通过fis输入流调用read方法,读取一个字节。
                2. 把读取到的这个字节赋值给变量i。
                3. 判断i是否不等于-1,如果不是-1表示读取到了内容,就在循环中对读取到的内容进行处理。
                读取到的内容在i里面保存*/
            System.out.print((char) i);


        }
        //释放资源demo02_inputsteam

    }
}
        使用字节输入流一次读取一个字节数组。
        int read​(byte[] b): 一次读取一个字节数组,
        输入流会把读取到的内容放入到这个字节数组中,并返回读取到的个数, 如果读取结束返回-1.
        这种读取方式效率高
        */
public class Demo02InputStream {
    public static void main(String[] args) throws IOException {
        //创建Fileinptstream 流对象,并绑定源文件
        FileInputStream fis=new FileInputStream("E:\\masm5\\aaa.txt");
        //调用read方法读取数据.
        //        // int read​(byte[] b): 一次读取一个字节数组
        // 会将数据读取到字节数组里面。 字节数组长度是几,那么就最多一次读取几个。 并
        // 且返回读取到的个数,读取结束,返回-1
        //
        //        //使用循环,一次读取一个字节数组
        //        //定义一个字节数组,用来保存读取到的数据。

        byte arr[]=new byte[3];
        //定义一个变量来保存读到的个数
        int len;//返回读取到的个数
        //使用循环开始读取
        while((len=fis.read(arr))!=-1){
            /*
            上面条件作了下面的事情:
            1. 通过字节输入流fis调用read方法,将数据读取到Arr这个字节数组中
            2. 将读取到的有效个数返回,赋值给len。
            3. 判断len是否不等于-1,如果不等于-1,表示读取到了内容,就就在循环中进行处理.
                    读取出来的数组在bArr数组中放着
                    */
            //最后一次读取可能会有上次残留的数据,所以不能把字节数组的整体都转成String
            //System.out.println(new String(bArr));

            //读取到了几个内容,就把字节数组的几个元素转成字符串,并且打印
            System.out.println(new String(arr,0,len));



        }

    }
}
   文件复制。

    文件复制其实就是一边读,一边写,每读取一次就把读取到的内容写到文件中。
    为了保证复制效率,我们采用一次读取一个字节数组的方式进行复制

    思路:
        1. 创建字节输入流对象,用来读取
        2. 创建字节输出流对象,用来写入。
        3. 开始读取,一次读取一个字节数组。
        4. 把读取到的字节数组的内容写入到目的地文件
        5. 循环 第3步 和 第4步
        6. 释放资源
 */
public class Demo03Copy {
    public static void main(String[] args) throws IOException {
        //1. 创建字节输入流对象,用来读取
        FileInputStream fis = new FileInputStream("E:\\masm5\\aa.jpg");
        //2创建字节输出流对象,用来写入//没有会创建
        FileOutputStream fs = new FileOutputStream("zhongguo");
        //3创建一个数组用来读取
        byte arr[] = new byte[1024 * 8];
        int len;//用来计数
        while ((len = fis.read(arr)) != -1) {
            //从文件中用字节数组读取数组,存储到字节数组中
//            每读取到一个内容,就把读取到的内容写入到目的地文件
            fs.write(arr,0,len);

        }
        //释放资源
        fs.close();
        fis.close();

    }

}

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

InputStream 的相关文章

  • 《TCP/IP网络编程》阅读笔记--Socket类型及协议设置

    目录 1 协议的定义 2 Socket的创建 2 1 协议族 Protocol Family 2 2 Socket类型 Type 3 Linux下实现TCP Socket 3 1 服务器端 3 2 客户端 3 3 编译运行 4 Window
  • Docker 网络实现

    Docker 网络实现 Docker 的网络实现其实就是利用了 Linux 上的网络名字空间和虚拟网络设备 特别是 veth pair 建议先熟悉了解这两部分的基本概念再阅读本章 基本原理 首先 要实现网络通信 机器需要至少一个网络接口 物
  • 2023华为OD机试真题【连接器/贪心算法】

    题目描述 有一组区间 a0 b0 a1 b1 a b表示起点 终点 区间有可能重叠 相邻 重叠或相邻则可以合并为更大的区间 给定一组连接器 x1 x2 x3 x表示连接器的最大可连接长度 即x gt gap 可用于将分离的区间连接起来 但两
  • linux搭建环境命令,在Linux上搭建测试环境常用命令(转自-测试小柚子)

    一 搭建测试环境 二 查看应用日志 1 vi vi vim 原本是指修改文件 同时可以使用vi 日志文件名 打开日志文件 2 less less命令是查看日志最常用的命令 用法 less 日志文件名 分页显示文件的内容 经常使用这个命令是因
  • [开发中遇到的算法] 均分数组

    业务背景 最近我需要写并发rpc的负载均衡 某种意义上的吧 遇到很有意思的问题 需求如下 下游固定死最多一次请求100个 比如要请求101个时要拆两个请求并发rpc 并等待两个请求都返回后拼装成一个结果返回 拆成51个 50个发出请求比拆成
  • lgg8各个版本_如何评价LG G8?

    回复下吧 产品中规中矩的升级 奈何同期对手太强 宣发脑子被驴踢 前置TOF早有透露 自家lg innotek的产品 效果不错 能更好3d人脸自拍 人脸识别 以及AR 都9012了搞隔空操作还作为宣传主力真是脑子进了水 忘了三星S4的眼球操作
  • [人工智能-深度学习-24]:卷积神经网络CNN - CS231n解读 - 卷积神经网络基本层级

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 人工智能 深度学习 23 卷积神经网络CNN CS231n解读 卷积神经网络基本层级 文火冰糖 王文兵 的博客 CSDN博客 目录 第1章
  • 使用elment+moment写年时间段选择

    要求 选择年的时间段 不能选择当前年之后的年份 先看实现效果如 1 html结构代码
  • 矩阵的迹(Trace)

    译自维基百科 在线性代数中 方阵A n n 的迹定义为对角线元素的和 即 矩阵的迹表示的是特征值的和 它不随基的变化而变化 通常 这种特性可以用来定义线性算子的轨迹 注意 迹是对方阵而言的 举例 A是一个方阵 如下 则A的迹表示为 迹的特性
  • KEIL编译出现错误“source file is not valid utf-8”

    KEIL编译出现错误 source file is not valid utf 8 在外面复制了一段代码 c文件一直报错source file is not valid utf 8的错误 经查找原因就是 文件中出现中文符号导致的 特别是中文

随机推荐

  • 用Excel做相关性分析

    一 概念理解 相关关系 变量之间存在着的非严格的不确定的关系 对它们进行深层次的分析 观察它们的密切程度 相关性分析 对变量之间相关关系的分析 即相关性分析 其中比较常用的是线性相关分析 用来衡量它的指标是线性相关系数 又叫皮尔逊相关系数
  • new的三种用法

    new的三种用法 第一种 创建一个新对象 Test p new Test 10 这里的new的用法是创建一个新的Test型的对象 该用法一共有三个步骤 1 申请一个空间 2 在申请的空间当中构造一个对象 并将该对象放置到空间中 3 将空间的
  • Ubuntu下NFS服务器配置及应用

    NFS文件系统仅占用系统挂载点 NFS服务器设定好分享的目录 home shares 其他客服端就可以将这个目录挂载到自己系统上的挂载点上 home shares就像自己的一个分区 但不占用自己的磁盘空间 虽然NFS有自己的协议及端口号 但
  • 必测的支付漏洞(一)——使用fiddler篡改支付金额

    互联网产品中常会遇到支付功能 测试人员测试这部分功能时一定要重视 因为如果这部分出现了较严重的bug 将会给公司带来不小的经济损失 如果你测出了问题领导也一定会高兴的 因此测试优先级很高 但具有一定难度 刚接触测试的小白们可能不知道支付功能
  • 五分钟成为记忆王

    一 记忆的面纱 1 记忆的含义 1 就在我嘴边上 有多少次你这样说过 就在我嘴边上 又有过多少次在你需要什么时候 任凭你如何拼命地想 就是想不起来 当然 这问题不是你一个人才有 几乎所有的人都受到过记忆力差的困扰 这也是人类的一个最常见的不
  • stm32 IO口的八种输入输出模式

    记录一下stm32 IO口的八种输入输出模式的学习 首先 可以看见stm32的输入输出模式有以上8种 先从简单的开始说吧 上拉输入和下拉输入 看图 由上图可见 当IO口设置为上拉输入的时候 IO口内部的上拉电阻就被接上了 从字面意思可以理解
  • Java异常总结

    1 异常的定义 定义 异常又称例外 是程序执行过程中发生的事件 它会终止程序的正常执行 2 异常的分类 Error 是JVM内部产生的 不需要程序员去解决 是不受检查异常 非代码性错误 Exception 是用户程序可能出现的异常 它是用来
  • 单片机关于推挽输出和开漏输出

    什么是推挽输出 推挽输出既可以输出高电平也可以输出低电平 推挽式输出电路 推挽式输出电路是由互补的两个三极管构成 所谓推拉 推是指推出去 就是输出为高电平是 电流是由内流向外的 形象的称之为推 拉就是从外部向内部拉 当输出为低电平时 电流由
  • java设计模式——享元模式(Flyweight Pattern)

    概述 面向对象技术可以很好地解决一些灵活性或可扩展性问题 但在很多情况下需要在系统中增加类和对象的个数 当对象数量太多时 将导致运行代价过高 带来性能下降等问题 享元模式正是为解决这一类问题而诞生的 享元模式通过共享技术实现相同或相似对象的
  • java 抓取网页_Java抓取网页数据

    有时候由于种种原因 我们需要采集某个网站的数据 但由于不同网站对数据的显示方式略有不同 本文就用Java给大家演示如何抓取网站的数据 1 抓取原网页数据 2 抓取网页JavaScript返回的数据 一 抓取原网页 这个例子我们准备从http
  • 基于Cordova插件创建app及打包成apk

    基于Cordova插件创建app及打包成apk 1 配置开发环境 一 下载并安装node js npm功能可以使用 二 利用npm安装cordova插件 三 配置JAVA ANDROID GRDLE的系统环境 1 java jdk jre设
  • ThreadLocal与局部变量

    ThreadLocal和线程局部变量有什么区别 我们先看一段代码 如下 public class ThreadLocalLearn static ThreadLocal
  • 华为OJ:ip地址与整数之间的转换

    原理 ip地址的每段可以看成是一个0 255的整数 把每段拆分成一个二进制形式组合起来 然后把这个二进制数转变成 一个长整数 举例 一个ip地址为10 0 3 193 每段数字 相对应的二进制数 10 00001010 0 00000000
  • html5里js里怎么写入sql语句,SQL语句在JavaScript中的应用

    有兴趣的朋友可以 QQ 85302520 联系我 或者 Email gongji at qq dot com 已经开放了 SVN checkout 地址 http code google com p jsql javascript sour
  • 无限级分类在DataGrid和DropDownList中的体现

    实现效果 Datagrid Dropdownlist 实现效果 Datagrid Dropdownlist 实现步骤 1 创建表 CREATE TABLE dbo mulType TypeId int IDENTITY 1 1 NOT NU
  • Qt树形控件QTreeView使用1——节点的添加删除操作 复选框的设置

    QtreeView是ui中最常用的控件 Qt中QTreeWidget比QTreeView更简单 但没有QTreeView那么灵活 QTreeWidget封装的和MFC的CTreeCtrl很类似 没有mvc的特点 1 QStandardIte
  • ps换证件照背景颜色

    日常工作生活学习中经常会用到各种不同底色的证件照 手上的证件照底色不符合要求怎么办呢 以红色底色的证件照换蓝色底色证件照为例 我们一起来看看如何用ps换证件照背景颜色 下面是原始的红底证件照 我们用ps photoshop 打开该红底证件照
  • 智慧监狱解决方案-最新全套文件

    智慧监狱解决方案 最新全套文件 一 建设背景 二 思路架构 三 建设方案 四 获取 智慧监狱全套最新解决方案合集 一 建设背景 智慧监狱 是 数字法治 智慧司法 信息系统建设的重要组成部分 其主要内容是在现有监狱信息建设的基础上 充分利用大
  • 【MM32F5270开发板试用】五、rt-thread 利用SPI接口驱动SD卡

    篇文章来自极术社区与灵动组织的MM32F5270开发板评测活动 更多开发板试用活动请关注极术社区网站 作者 Magicoe是攻城狮 之前SPI接的是个2 4寸的小屏幕 鉴于MM32F5270片上没有SDIO接口用的是SPI拓展的SD卡 反正
  • InputStream

    在java中InputStream是字节输入流 用来将文件中的数据读取到java程序中 InputStream是所有字节输入流的顶层父类 是一个抽象类 如果要用 需要使用子类 最常用的子类 FileInputStream 构造方法 File