JAVA学习-IO.输入输出流

        Java的输入输出流(IO)是用于与外部设备(如文件、网络连接等)进行数据交互的机制。IO流是Java中处理输入和输出的一种方式,它以流的方式来读取输入或写入输出。

        Java的IO库包括了多个输入输出流类,常见的输入流有InputStream和Reader,常见的输出流有OutputStream和Writer。

一、输入流用于从外部设备中读取数据,输出流用于向外部设备写入数据。不同的输入输出流有不同的特点和适用场景,下面是常见的输入输出流及其特点:

1. InputStream:

        用于从字节流中读取数据,它是所有字节输入流的超类。常用的子类有FileInputStream、ByteArrayInputStream等。

2. OutputStream:

        用于向字节流中写入数据,它是所有字节输出流的超类。常用的子类有FileOutputStream、ByteArrayOutputStream等。

3. Reader:

        用于从字符流中读取数据,它是所有字符输入流的超类。常用的子类有FileReader、BufferedReader等。

4. Writer:

        用于向字符流中写入数据,它是所有字符输出流的超类。常用的子类有FileWriter、BufferedWriter等。

二、使用输入输出流的一般步骤如下:

1. 创建输入流或输出流对象,可以使用多种构造方法,取决于所需的具体输入输出类型。

2. 打开输入流或输出流,可以使用open()方法。

3. 进行读取或写入操作,可以使用read()和write()方法。

4. 关闭输入流或输出流,可以使用close()方法。

三、与其他方式相比,Java的输入输出流具有以下优点:

1. 统一的接口:

        无论是读取文件、网络连接还是其他外部设备,都可以使用相同的接口进行输入输出。

2. 灵活性:

        可以通过组合不同的输入输出流来满足不同的需求。

3. 高效性:

         Java的输入输出流使用了缓冲机制,可以提高读写的效率。

4. 异常处理:

        Java的输入输出流在读写过程中会抛出异常,可以有效地处理异常情况。

下面是一个使用Java输入输出流进行文件读写的示例代码:

import java.io.*;public class FileReadWriteExample {public static void main(String[] args) {String fileName = "example.txt";try {// 创建输入流读取文件FileInputStream fileInputStream = new FileInputStream(fileName);InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);BufferedReader bufferedReader = new BufferedReader(inputStreamReader);// 创建输出流写入文件FileOutputStream fileOutputStream = new FileOutputStream("output.txt");OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);// 读取文件并写入输出流String line;while ((line = bufferedReader.readLine()) != null) {bufferedWriter.write(line);bufferedWriter.newLine();}// 关闭输入输出流bufferedReader.close();bufferedWriter.close();} catch (IOException e) {e.printStackTrace();}}}

        以上代码通过输入输出流读取文件内容并写入到另一个文件中。首先使用FileInputStream、InputStreamReader和BufferedReader来读取文件,然后使用FileOutputStream、OutputStreamWriter和BufferedWriter来写入文件。最后通过关闭输入输出流来释放资源。

四、高级应用中,还可以使用其他输入输出流的子类来进行特殊操作。

        如ObjectInputStream和ObjectOutputStream可以用于序列化和反序列化对象,DataInputStream和DataOutputStream可以用于读写原始数据类型等。

五、需要注意:

        以上示例代码仅为演示输入输出流的基本用法,实际应用中需要根据具体需求选择使用适当的输入输出流以及进行异常处理。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

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

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

相关文章

C语言-写一个简单的Web服务器(一)

基于TCP的web服务器 概述 C语言可以干大事,我们基于C语言可以完成一个简易的Web服务器。当你能够自行完成web服务器,你会对C语言有更深入的理解。对于网络编程,字符串的使用,文件使用等等都会有很大的提高。 关于网络的TCP协议在…

算法练习第十七天| 110.平衡二叉树 、 257. 二叉树的所有路径、 404.左叶子之和 [主要使用递归的方式]

110.平衡二叉树 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

zookeeper Study

zk介绍;一种分布式协调服务。 分布式锁,集群选举,数据同步 。 zk都能进行操作,redis,kafka,rabbitmq,都能够用zk做协调管理服务。关键时zk简单操作。 应用说明: 简单介绍一下流程 &…

芯片工程系列(2)传统封装(引线键合与裸片贴装)

英文缩写 Die:即为wafer上切割出来的芯片Wire Bonding:引线键合Dicing:晶圆切割Bias voltage:偏压lead frame:引线框架First Bond:一次键合Second Bond:二次键合PCB:印制电路板&…

JMH287亲测【鸣潮】一键内测风景端V1.0.2已整理并录制视频教学

资源介绍: 否需要虚拟机:否 文件大小:压缩包约15G 支持系统:win7、win10、win11 硬件需求:运行内存16G 4核及以上CPU独立显卡 资源截图: 下载地址: JMH287【鸣潮】一键端 [V1.0.2]

给攻击扫站惊喜大礼包,压缩文件空链接直接跳转50G大文件

给攻击扫站惊喜大礼包,压缩文件空链接直接跳转50G大文件 方法一 在 nginx 配置里加了个下载空连接 ZIP/RAR 等链接,直接跳转 50G 的大文件,正常链接不受影响 location ~ /(.*\.7z|.*\.zip|.*\.rar|.*\.tar|.*\.gz|.*\.tar\.gz)$ {if (!-f $re…

题解:CF1929C(Sasha and the Drawing)

题解:CF1929C(Sasha and the Drawing ) 一、 理解题意 CF链接 洛谷链接 大佬syz带着 a a a 元来到赌场,赌场的规则如下: 对于每一轮,假设选手下注 y y y 元钱( y y y 应正整数,并…

Java面试题分享

1、JAVA面试题分享 大家在找工作的的时候总是会看对应专业的面试题,java方面的更是层出不穷。 网络搜寻也很多,不知道看那个好。 我在这里分享我在找工作和平常会复习的一套面试题。 是之前在csdn的一个博主星球下载的。 里面包含了基础,集…

SpringMVC09、Ajax

9、Ajax 9.1、简介 AJAX Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 Ajax 不是一种新的编程语言,而是一种用于创建更好更快以及交互…

nodejs创建的‘无后缀‘文件Win11无法删除、无法修改后缀、360文件粉碎无法粉碎

版本信息 操作系统版本:win11nodejs:v14.16.0 场景: 接收了base64格式数据字符串(data:*/*;base64,xxxxxx就是这种样式的);要将其存储于本地。将字符串,号后的字符串转二进制写入本地。内容各种的都获取…

Spring Security的API Key实现SpringBoot 接口安全

Spring Security的API Key实现SpringBoot 接口安全 Spring Security 提供了各种机制来保护我们的 REST API。其中之一是 API 密钥。API 密钥是客户端在调用 API 调用时提供的令牌。 在本教程中,我们将讨论如何在Spring Security中实现基于API密钥的身份验证。 API…

CSP初赛备考—汉字与运算

汉字 英文字符 英文字符的编码有两种:①ASCII标准码,7位(128个字符)②ASCII扩展吗,8位(256个字符) 中文字符 汉字分为两级:①一级汉字:3755个,按汉语拼音字母的次序排列。②二级汉字:3008个,按偏旁部首排列。 那么,怎么编码呢?要使用区位码和字形码等等。 区…

Docker环境搭建和监控备份

1. 解释Docker中的容器和镜像的概念,并说明它们在环境搭建中的作用。 Docker中的容器和镜像是Docker最核心的概念,它们在环境搭建中扮演着至关重要的角色。 容器(Container): 容器是Docker环境中用于运行应用的实体…

注意力机制网络

注意力机制在深度学习领域中是一种重要的技术,特别是在序列模型和自然语言处理(NLP)任务中。注意力机制的核心思想是在模型的输入上模拟人类的注意力过程,即模型能够自动决定在处理特定任务时应该“关注”输入数据的哪些部分。通过…

【UE5】游戏框架GamePlay

项目资源文末百度网盘自取 游戏框架 游戏 由 游戏模式(GameMode) 和 游戏状态(GameState) 所组成 加入游戏的 人类玩家 与 玩家控制器(PlayerController) 相关联 玩家控制器允许玩家在游戏中拥有 HUD,这样他们就能在关卡中拥有物理代表 玩家控制器还向玩家提供 …

在centos7系统中如何给docker配置代理

一、需求场景 生产环境私有云中,通常一个集群的机器中只有几台机器可以直接访问公网,其他机器需要通过代理的方式从能访问公网的机器出去,在已经做了如下配置之后,使用docker pull命令已经报错超时timeout,这时可以尝…

利用tree命令自动保存文件层级结构

tree命令的使用 为了将上图左侧的文件目录,生成上图右侧中的文件夹结构列表,保存在txt中,使用了如下cmd命令: C:\armadillo-12.8.0>tree .>list.txt以上tree命令分为3部分: tree 命令. 在当前目录>list.tx…

使用Numpy手工模拟梯度下降算法

代码 import numpy as np # Compute every step manually# Linear regression # f w * x # here : f 2 * x X np.array([1, 2, 3, 4], dtypenp.float32) Y np.array([2, 4, 6, 8], dtypenp.float32)w 0.0# model output def forward(x):return w * x# loss MSE def loss…

02hadoop伪分布式搭建

3. 环境安装 3.1 安装方式 单机模式 只能启动MapReduce 伪分布式 能启动HDFS、MapReduce 和 YARN的大部分功能 完全分布式 能启动Hadoop的所有功能 3.2 安装JDK 3.2.1 JDK安装步骤 下载JDK安装包(下载Linux系统的 .tar.gz 的安装包) https://www…

循序渐进丨MogDB 数据库特性之动态数据脱敏机制

数据脱敏是行之有效的数据库隐私保护方案之一,可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化脱敏策略来实现对隐私数据保护的技术,可以在保留原始数据的前提下有效地解决非授权用户对敏感信息访问的问题。当管理员…