深入Java IO:理解与实践

一、Java IO概述

Java IO主要可以分为字节流和字符流两大类。字节流是最基本的流,用于处理所有类型的数据,如图片、音频、视频等。字符流则是专门用于处理文本数据的流。

1. 字节流

字节流主要由InputStream和OutputStream两个抽象类及其子类组成。InputStream表示字节输入流,用于从数据源读取数据;OutputStream表示字节输出流,用于向目标写入数据。

2. 字符流

字符流主要由Reader和Writer两个抽象类及其子类组成。Reader表示字符输入流,用于读取文本数据;Writer表示字符输出流,用于写入文本数据。

二、Java IO的常用类

Java IO提供了许多具体的类来实现不同的IO操作,如FileInputStream、FileOutputStream、BufferedReader、BufferedWriter等。这些类可以方便地读取和写入文件、网络数据等。

三、Java IO示例

下面我们通过几个简单的示例来展示Java IO的应用。

示例1:使用字节流读取文件

java
import java.io.*;  
  
public class ByteStreamExample {  
    public static void main(String[] args) {  
        File file = new File("example.txt");  
        try (FileInputStream fis = new FileInputStream(file)) {  
            byte[] buffer = new byte[1024];  
            int bytesRead;  
            while ((bytesRead = fis.read(buffer)) != -1) {  
                String data = new String(buffer, 0, bytesRead);  
                System.out.print(data);  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}

在上面的示例中,我们使用FileInputStream来读取一个名为example.txt的文件。通过循环读取字节数据,并将其转换为字符串输出。

示例2:使用字符流写入文件

java
import java.io.*;  
  
public class CharacterStreamExample {  
    public static void main(String[] args) {  
        File file = new File("output.txt");  
        try (FileWriter fw = new FileWriter(file);  
             BufferedWriter bw = new BufferedWriter(fw)) {  
            bw.write("Hello, Java IO!");  
            bw.newLine();  
            bw.write("This is an example of character stream.");  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}

在上面的示例中,我们使用FileWriterBufferedWriter来写入文本数据到名为output.txt的文件中。通过write方法写入字符串,并使用newLine方法添加换行符。

四、总结

Java IO是Java编程中非常重要的一部分,它提供了丰富的类和接口来处理数据的输入和输出。通过字节流和字符流,我们可以方便地读取和写入文件、网络数据等。在实际开发中,我们需要根据具体的需求选择合适的流来进行操作,以提高程序的效率和可靠性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

号卡流量卡分销推广系统源码

这是一个多功能的流量卡推广分销系统PHP源码,它是一套完善的、功能丰富的号卡分销系统,拥有多个接口,包括运营商接口,以及无限三级代理。这是目前市面上最优雅的号卡系统,没有之一。 软件架构说明: 环境要求…

网络原理(qq消息发送原理)

1.网络初识 IP地址 概念: IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。简单说,IP地址⽤于定位主机的⽹络地址。 就像我们发送快递⼀样,需要知道对⽅的收货地址,快递员才能将包裹送到…

多模态视觉大模型(2): 常用模型介绍(CLIP和LLAVA)

文章目录 1.CLIP 讲解1.1 clip 预训练过程1.2 利用clip进行图像分类1.3 CLIP代码详解1.3.1 Image Encoder 和 Text Encoder的实现1.3.2 搭建CLIP模型1.3.3 准备数据1.3.4 Loss的定义1.4 完整代码2.GLIP 讲解2.1 GLIP 介绍2.2 GLIP 网络结构3.Flamingo3.1 模型介绍3.2 Loss 定义…

远程控制软件优化(1)

远程控制软件优化(1) 第一版存在以下缺点: 1、四大部分中 Robot States 部分过于简陋,不适合放到论文中 2、Lidar BEV 图像显示效果非常差,显示不全且很稀疏 3、视频流传输延时过高,无法实现远程控制 以…

基于OpenMV 双轴机械臂 机器学习

文章目录 一、项目简要二、目标追踪1. 色块识别与最大色块筛选2. PID位置闭环 三、机器学习1. Device12. Device2 四、效果演示 一、项目简要 两套二维云台设备,Device1通过摄像头捕捉目标物块点位进行实时追踪,再将自身点位传到Device2,Dev…

【力扣周赛】第394场周赛

文章目录 1.统计特殊字母的数量2.使矩阵满足条件的最少操作次数 1.统计特殊字母的数量 题目链接 🍎该题涉及的小技巧:🐥 🐧①大写字母和对应的小写字母低5位都是相等的; 🐧②大写字母ASCII二进制第 6 位…

node.js + @elastic/elasticsearch 操作elasticsearch数据库

我这边node.js 使用的是 koa2,elasticsearch是8.11.1版本 官网:https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/getting-started-js.html 一、elastic/elasticsearch 连接 elasticsearch数据库 如果elasticsearch没有设…

win c++使用lua环境配置 5.3.5版本

编译lua 下载lua源码,github仓库 使用vs编译源码,新建一个静态库项目(只会生成lib文件),想要dll的话就新建dll项目(有一个lib文件和dll文件) 把lua源码下面的文件夹都是,复制到vs项目中 lib目录是我手动…

ResNeXt网络结构

一、简介 在ResNet的基础上,对残差结构的block进行了更新。 ResNeXt网络是一种深度神经网络架构,可以视为对ResNet(残差网络)的改进和升级。ResNeXt结合了VGG网络的堆叠相同基础模块的策略以及Inception系列网络中的split-trans…

杰发科技AC7840——CAN通信简介(6)_监听模式

参考:http://t.csdnimg.cn/AFFPC 0. 简介 7840支持4种扩展模式,其中监听模式。 监听模式概念 作用: 这里写的用于诊断,实际上我还没有用到,不太理解为啥可以用作诊断。 我的理解是,在多个总线下,使用监听…

装饰器模式【结构型模式C++】

1.概述 装饰器模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 2.结构 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。具体构件(Concre…

苍穹外卖绕过微信支付

经过以下改动可实现: 1、不用微信支付端口 2、弹出支付成功的界面 3、数据库修改支付成功后的数据 #在OrderServiceImpl.java里加入Autowiredprivate OrderService orderService; #在OrderServiceImpl.java里的payment函数做以下改动 #图片里有,红色为原…

时间序列生成数据,TransformerGAN

简介:这个代码可以用于时间序列修复和生成。使用transformer提取单变量或者多变时间窗口的趋势分布情况。然后使用GAN生成分布类似的时间序列。 此外,还实现了基于prompt的数据生成,比如指定生成某个月份的数据、某半个月的数据、某一个星期的…

Qt | 窗口的显示及可见性|标题、透明度、启用/禁用|窗口标志、设置其他属性|获取窗口部件、设置父部件|鼠标光标

​显示事件:QEvent::show,处理函数为 showEvent(QShowEvent*) 隐藏事件:QEvent::hide,处理函数为 hideEvent(QHideEvent* ) 01 QWidget 类中与可见性有关的属性 visible:bool 访问函数: bool isVisible() const; virtual void setVisible(bool visible); 02 QWid…

同事上班这样摸鱼,我坐边上咋看他都在专心写代码啊

我边上有个同事,我坐他边上,但是每天看着他都眉头紧锁,忙的不亦乐乎,但终于有一天,我发现了他上班摸鱼的秘诀。 我劝你千万不要学会这4招,要不就该不好好上班了。 目录 1 上班看电影? 2 上班…

LeetCode - LCR 179.查找总价格为目标值的两个商品

一. 题目链接 LeetCode - LCR 179. 查找总价格为目标值的两个商品 解法(双指针 - 对撞指针): 算法思路: 注意到本题是升序的数组,因此可以用「对撞指针」优化时间复杂度。 算法流程: 初始化left &#…

算法入门ABC

前言 初学算法时真的觉得这东西晦涩难懂,貌似毫无用处!后来的后来,终于渐渐明白搞懂算法背后的核心思想,能让你写出更加优雅的代码。就像一首歌唱的那样:后来,我总算学会了如何去爱,可惜你早已远…

Hotcoin Academy 市场洞察-2024年4月15日-21日

加密货币市场表现 BTC ETF在本周出现净流出,大盘有较大跌幅,BTC一度跌破60000美金,ETH一度跌破2800美金,整体以横盘为主,行情在周末有略微回升趋势。BTC市占率创21年4月来新高,目前市值1.28万亿&#xff0c…

ElasticSearch教程入门到精通——第六部分(基于ELK技术栈elasticsearch 7.x+8.x新特性)

ElasticSearch教程入门到精通——第六部分(基于ELK技术栈elasticsearch 7.x8.x新特性) 1. Elasticsearch优化1.1 硬件选择1.1 分片策略1.1.1 分片策略——合理设置分片数1.1.2 分片策略——推迟分片分配 1.2 路由选择1.2.1 路由选择——不带routing查询1…

哪款洗地机最好用?2024年四大口碑一流品牌推荐

随着人们生活质量的提升,人们的扫地、拖地都可以用智能清洁工具来高效完成,像洗地机它集合了扫地、拖地、自清洁等功能,让我们摆脱了每次打扫卫生就像打仗一样,忙活半小时下来腰酸背痛的窘境。所以越来越多的家庭纷纷开始用洗地机…