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.mzph.cn/news/771925.shtml

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

相关文章

智慧医疗包括哪些方面?智慧医疗发展前景如何?

近年来,随着云计算、物联网(internet of things,IOT)、移动互联网、大数据、人工智能(artificial intelligence,AI)、5G网络、区块链等新一代信息技术的逐步成熟和广泛应用,信息化已…

【码云Git提交】Windows

一、第一次提交 1.登录码云创仓库 2.观察创建后的提示,就有步骤命令了 3.我们在系统中打开一个测试文件夹窗口打开GitBash PS:(你需要提前装一个Node,本章不介绍) 我们打开一个创建的test测试文件夹窗口,…

题目 2808: 买房子

题目描述: 某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员未来年薪不变,且不吃不喝,不用交税,每年…

蓝桥杯真题训练 包子凑数(数论)

题解 找到所有数的最大公约数,如果这个数大于1,则说明一定会有数是凑不出来的,即INF,否则的话,用dp去寻找每个数是否能被凑出来,若j-a[i]可以被凑出来,则j一定可以被凑出来,状态转移…

阿里 Modelscope 创空间部署在本地环境操作文档

创建创空间的步骤直接跳过。 备注:我的电脑是Windows 第一步:获取创空间代码,直接下载代码太慢了,建议通过git获取代码 第二步:复制链接,打开cmd 直接粘贴回车下载。下载完之后的到了我的Service-Assistant文件夹。再git clone https://gith…

可编程液冷负载的核心功能

可编程液冷负载核心功能在于根据设备的工作状态和环境温度,自动调整冷却液的流量和温度,以实现精确的散热控制。这种技术以其高效、智能的特性,为多个领域提供了全新的散热解决方案。 可编程液冷负载的核心功能在于其可编程性,这意…

【倪琴仲尼式-雷伴】全新倪诗韵精品杉木古琴

试音中的用弦:梦音,视频录音无任何处理,所见即所得。 现琴比照片更好看。倪琴吊牌、琴额后面的编码和倪琴官网上的序列号是一一对应的,可查。 雷伴,“伴”字取意陪伴、相伴、依随。栗壳色,纯鹿角霜生漆工艺…

芒果YOLOv8改进131:主干篇Acmix,即插即用,Self-Attention与CNN正确的融合范式,性能速度全面提升

该专栏完整目录链接: 芒果YOLOv8深度改进教程 芒果专栏 基于 ACmix 的改进结构,改进源码教程 | 详情如下🥇 💡本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 即插即用 结构。博客 包括改进所需的 核心结构代码 文件重点:🔥🔥🔥YOLOv8 使…

解决“ModuleNotFoundError: No module named ‘transformers’”错误的全面指南

一、问题背景与原因 在Python编程中,ModuleNotFoundError是一个常见的错误,表明解释器无法在指定的路径或Python环境中找到所需的模块。特别是当我们尝试导入像transformers这样的第三方库时,如果库没有被正确安装,就会遇到这样的…

linux安装指定版本docker

目录 查看主机上docker版本 配置docker的yum源 安装指定版本docker-20.10.14 查看yum中docker的版本 此命令装完后,任然会是最新版本的docker 卸载已安装docker 安装docker docker依赖包有冲突 解决冲突报错 再次执行安装docker命令 查看主机上docker版本 …

稀碎从零算法笔记Day28-LeetCode:零钱兑换

前言:鸽了好多天了哈哈哈,虽然C站没更但是LC还是坚持刷的,任重道远啊!(可恶的寝室熄灯) 题型:动态规划 链接:322. 零钱兑换 - 力扣(LeetCode) 来源:LeetCode 题目描述…

紫鸾5.0:紫光云新一代敏捷应用开发平台全家桶

曾几何时,“瀑布式”占据了二十世纪软件开发的主流,开发时间往往以年计,一款软件应用动辄几年才能交付。而随着社会生产力的跃升,“瀑布式”已严重跟不上时代的节奏,2001年,“敏捷宣言”的发布,…

微信小程序使用Vant组件库流程

目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本和支付宝小程序版本。这样开发原生微信小程序的会方便很多。 官方网址:Vant Weapp - 轻量、可靠的小程序 UI 组件库 步骤一 通过 npm 安装 npm i vant/weap…

Matplotlib库的初步理解与使用

matplotlib库的设计哲学: Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python. Matplotlib makes easy things easy and hard things possible. matplotlib是一个用来创建静态,动画&#…

蓝牙信标覆盖范围

蓝牙信标覆盖范围是一个重要的考虑因素,对于蓝牙技术的应用和部署至关重要。了解蓝牙信标的覆盖范围可以帮助我们更好地规划蓝牙设备的布局和位置,从而实现最佳的信号覆盖和传输效果。 首先,我们需要明确蓝牙信标的覆盖范围受到多种因素的影…

10 天 996 写出的语言 - JavaScript

本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除 10 天 996 写出的语言 - JavaScript 在 JavaScript 之前,网页主要是静态的,任何交互性都必须在服务器端处理,导致用户体验笨拙和缓慢。JavaScript 的…

C语言与sqlite3入门

c语言与sqlite3入门 1 sqlite3数据类型2 sqlite3指令3 sqlite3的sql语法3.1 创建表create3.2 删除表drop3.3 插入数据insert into3.4 查询select from3.5 where子句3.6 修改数据update3.7 删除数据delete3.8 排序Order By3.9 分组GROUP BY3.10 约束 4 c语言执行sqlite34.1 下载…

Web UI 自动化测试方案(超级干货)看完不会你找我

项目讨论 一、项目中符合自动化测试的部分有哪些?(目标和范围 scope, 准入准出标准) 1、稳定的需求点、变动较少的页面 2、每日构建后的测试验证 daily build 3、比较频繁的回归测试 4、需要在多平台上运行的相同测试案例、组合遍历型的测试、大量的重…

what is apache?

Apache 通常指 Apache Software Foundation (ASF) 或 Apache HTTP Server,两者都是计算机软件领域的重要实体。 Apache 软件基金会 (ASF):Apache 软件基金会是一个开发开源软件项目的非营利组织。它为涵盖软件开发各个方面的广泛项目提供支持&#xff0c…

3dmax展厅异形模型怎么做---模大狮模型网

在3ds Max中创建展厅异形模型需要一定的建模技巧和创造力。以下是一般的步骤: 准备设计方案: 首先,需要明确展厅的设计方案和概念,包括展厅的整体结构、空间布局和异形特点等。 创建基本结构: 在3ds Max中&#xff…