java常用应用程序编程接口(API)——IO流概述及字节流的使用

前言:

IO流和File是用于把数据存放在硬盘里的工具。File可以把文件存至硬盘,但不能更改里面的数据。通过IO流可以改写硬盘里的数据。整理下学习笔记,打好基础,daydayup!!!

IO流

 I指Input,称为输入流:负责把数据读到内存中去。O指Output,称为输出流:负责写数据出去。

 IO流的分类体系

IO流按照流的方向可分为输入流和输出流;按照数据的最小单位可分为字节流和字符流。字节流适合操作所有类型的文件。字符流只适合操作纯文本文件。

字节输入流:以内存为基准,来自磁盘文件/网络中的数据以字节的形式读入到内存中去的流

字节输出流:以内存为基准,把内存中的数据以字节写出到磁盘文件或者网络中去的流。

字符输入流:一内存为基准,来自磁盘文件/网络中的数据以字符的形式读入到内存中去的流。

字符输出流:以内存为基准,把内存中的数据以字符写出到磁盘文件或者网络介质中去的流。

 

(图片来源:黑马程序员) 

FileInputStream(文件字节输入流)

作用:以内存为基准,可以把磁盘文件中的数据以字节的形式读入到内存中去

输入方法为:

方法说明
public int read()每次读取一个字节返回,如果发现没有数据可读会返回-1
public int read(byte[ ] buffer)每次用一个字节数组去读取数据,返回字节数组读取了多少字节,如果发现没有数据可读会返回-1
public byte[ ] readAllBytes() throw IOException直接将当前字节输入流对应的文件对象的字节数据装到一个字节数组返回

 通过上述方法可以实现单个字节输入,多个字节输入和全部字节输入

1,单个字节输入

 FileInputStream通过构造器取得对象后,通过read方法可以依次调取到字节,当全都调取结束后,将返回-1。示例如下:

 但read默认只能读取一个字节,需要全部读取完,需要重复多行代码。为了优化这一过程你,可以使用while语句循环,进行连续读取。如下

 2,多个字节输入

和单个字节输入不同的是,多个字节输入需要定义一个字节数组。然后在read方法中定义字节变量,操作如下

如果需要连续读取,则需要通过while进行操作。如下:

3,一次读取完全部字节

通过readAllBytes可以取到全部的字节,示例如下

 

FileOutputStream(文件字节输出流)

作用:以内存为基准,把内存中的数据以字节的形式写出到文件中去

输出方法为:

方法说明
public void write (int a)写一个字节出去
public void write (byte[ ] buffer)写一个字节数组出去
public void write (byte[ ] buffer,int pos,int len)写一个字节数组的一部分出去
public void close() throw IOException关闭流

 例:

 案例:

通过字节输出和输入实现文件的复制

思路:指定复制的位置,设定输入的字节数,然后通过输入流写入,通过输出流写出

操作步骤:如下

总结

字节流可以输出一切,图片,视频,文档,本次实验输出的是文档,感兴趣的可以试着输出视频之类的。整理结束,撒花!!!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Harmony OS 网络编程 实验指南

netcat简介 netcat 是什么? netcat是一个非常强大的网络实用工具,可以用它来调试TCP/UDP应用程序; netcat 如何安装? Linux上可以使用发行版的包管理器安装,例如Debian/Ubuntu上: sudo apt-get instal…

pycharm使用远程服务器的jupyter环境

1、确保服务器上安装了jupyter,如果没有,执行下面命令安装 pip install jupyter2、启动jupyter notebook服务 jupyter notebook --no-browser --port8888 --ip0.0.0.0 --allow-root表明在服务器的8888 端口上启动 Jupyter Notebook,并允许从任何 IP 地…

安捷伦Agilent E5071B网络分析仪

181/2461/8938产品概述: Agilent E5071B 网络分析仪可为射频组件提供快速、准确的测量。与同类网络分析仪相比,其宽动态范围和低迹线噪声可实现更高的测试质量和吞吐量。内置 2、3 和 4 个测试端口可同时测量具有最多四个端口的组件的所有信号路径。Agi…

Jenkins中支持maven构建遇到仓库报错问题

目的 Jenkins中支持maven构建(Jenkins使用docker安装) 问题 1.构建一个maven项目 2.执行报错 /var/lib/jenkins/local_maven_repo/com/sx/root/1.0.4/root-1.0.4.pom.part.lock (No such file or directory) Failed to transfer Could not transfer artifact co…

python(django)之单一接口管理功能后台开发

1、创建数据模型 在apitest/models.py下加入以下代码 class Apis(models.Model):Product models.ForeignKey(product.Product, on_deletemodels.CASCADE, nullTrue)# 关联产品IDapiname models.CharField(接口名称, max_length100)apiurl models.CharField(接口地址, max_…

2024年3月更新,10个AI绘画工具推荐

本文整理了10个热门的AI绘图在线生成器,为设计师们和创意工作者提供一份全面的参考,帮助大家在创作过程中更上一层楼! 1. Midjourney Midjourney是一款非常流行的AI绘图在线生成器,拥有简洁明了的界面和丰富的绘画功能&#xf…

第十三届蓝桥杯省赛真题 Java 研究生 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 排列字母试题 B: 灭鼠先锋试题 C: 质因数个数试题 D: 数位排序试题 E: 蜂巢试题 F : \mathrm{F}: F: 爬树的甲壳虫试题 G: 重新排序试题 H \mathrm{H} H : 技能升级试题 I: 最优清零方案试题 J : \mathrm{J}: J: 推导部分和 发现宝藏 …

百能云板开启高品质铝基PCB线路板定制服务

铝基板是一种具有良好散热功能的金属基覆铜板,一般单面板由三层结构所组成,分别是电路层(铜箔)、绝缘层和金属基层。用于高端使用的也有设计为双面板,结构为电路层、绝缘层、铝基、绝缘层、电路层。极少数应用为多层板…

代码随想录算法训练营第三十天| 回溯算法总结

回溯算法核心:for循环横向遍历,递归纵向遍历,回溯不断调整结果集。对于startIndex(startIndex来控制for循环的起始位置)的使用: 如果是一个集合来求组合的话,就需要startIndex,例如…

程序员35岁会失业吗?【来自主流AI的回答】

程序员35岁会失业吗? 35岁被认为是程序员职业生涯的分水岭,许多程序员开始担忧自己的职业发展是否会受到年龄的限制。有人担心随着年龄的增长,技术更新换代的速度会使得资深程序员难以跟上;而另一些人则认为,丰富的经…

【C#实战】SimpleJSON字典反序列化

C# 解析JSON道路千万条,其中最流行的还是由Newtonsoft出品的Json.NET,只需要将Json的结构做成C#的class,即可实现完美的序列化和反序列化。更重要的是它还支持LINQ。 Product product new Product(); product.Name "Apple"; pro…

Spring Boot | SpringBoo“开发入门“

目录 : 1.SpringBoot的“介绍”SpringBoot”概述” :SpringBoot”简介“SpringBoot的“优点” 2. SpringBoot入门程序环境准备使用 “Maven”方式构建SpringBoot 项目使用“Spring Initializr”方式构建Spring Boot 项目 3. “单元测试” 和“热部署”单元测试热部署…