Java IO 学习总结(一)输入流/输出流

news2024/12/24 2:30:25

前言:

学习IO流,记录并分享。文章如有错误,恳请指正。

Java IO流的类图:

Java IO流的类图

1、什么是 Java IO 流?

数据传输是需要通道的,而IO流就是数据传输的通道。IO流可以形象比喻为运送货物的传输带。运送的货物就是数据,这里的数据有两种类型,要么是字节数据,要么是字符数据。字符的本质还是字节。

2、为什么要用 Java IO 流?

Java IO流提供了一种机制,用于在Java程序中读取和写入数据。根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。它允许您从文件、网络连接、内存等“源”读取数据,并将数据写入这些源。使用Java IO流,您可以以一种可靠的方式处理数据,而无需考虑数据源的类型或底层实现。因此,Java IO流是Java编程中不可或缺的一部分。

3、怎么用 Java IO 流?

/**
 * 这些示例演示了如何使用Java IO流读取和写入文件
 *
 * @param args
 */
public static void main(String[] args) {
    String readFilePath = "D:/test/testName.txt";
    String writerFilePath = "D:/test/success/writer.txt";
    reader(readFilePath);
    writer(writerFilePath);
}

/**
 * 读取文件中的内容并打印到控制台
 *
 * @param FilePath 要读取的文件路径与文件名
 */
private static void reader(String FilePath) {
    try {
        // 1. 创建一个输入流对象 打开数据源(如文件或网络连接)
        BufferedReader reader = new BufferedReader(new FileReader(FilePath));
        // 使用输入流对象读取数据
        String line = reader.readLine();
        while (line != null) {
            System.out.println(line);
            line = reader.readLine();
        }
        // 在完成读取或写入操作后,关闭数据源和输入流对象。
        reader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

/**
 *
 * @param FilePath 要写入数据的文件路径与文件名
 */
private static void writer(String FilePath) {
    try {
        // 1.创建一个输出流对象 打开数据源(如文件或网络连接)
        BufferedWriter writer = new BufferedWriter(new FileWriter(FilePath));
        // 2.使用输出流对象写入数据
        writer.write("Hello World!");
        // 3.在完成读取或写入操作后,关闭数据源和输出流对象。
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

4、什么是字节流,什么是字符流,他们的区别是什么?

前言:设备上的数据无论是图片或者视频,文字,它们都以二进制存储的。二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节。
在这里插入图片描述

5、什么是输入流,什么是输出流?

在这里插入图片描述
说明:I/O流有很多种,按操作数据单位不同可分为字节流和字符流,按数据流的方向不同分为输入流和输出流,程序中需要根据待传输数据的不同特性而使用不同的流。
输入流只能进行读操作,当程序需要从某个数据源读入数据的时候,会开启一个输入流,数据源可以是文件、内存或网络等。
输出流只能进行写操作,当程序需要写入数据到数据源的时候,会开启一个输出流,数据源可以是文件、内存或网络等。

6、实战

将磁盘文件 A 的内容写入到 文件 B 中

public static void main(String[] args) throws IOException {
    TestCopyIO test = new TestCopyIO();
    String resourcesPath = "D:/test/gle.txt";
    String targetPath = "D:/test/gls.txt";
    String result = test.copy(resourcesPath, targetPath);
    System.out.println(result);
}

/**
 * 将磁盘文件 A 的内容写入到 文件 B 中
 *
 * @param resourcesPath 数据源文件
 * @param targetPath    目标文件
 * @return
 * @throws FileNotFoundException 输入流读入数据时找不到文件的时候会抛出这个异常
 * @throws IOException 可能会抛出的异常
 */
private String copy(String resourcesPath, String targetPath) throws FileNotFoundException, IOException {
    FileInputStream inputStream = null;
    FileOutputStream outputStream = null;
    try {
        // 1.创建一个输入流对象 打开数据源(如文件或网络连接)
        inputStream = new FileInputStream(resourcesPath);
        // 2.获取从此输入流读取的字节数的估计值
        int available = inputStream.available();
        // 3.创建存储读入的数据的容器
        byte[] resources = new byte[available];
        // 4.输入流对象读取数据 返回字节数据并放到 resources 中
        inputStream.read(resources);
        // 5.创建一个输出流对象 打开数据源(如文件或网络连接)
        outputStream = new FileOutputStream(targetPath);
        // 6.使用输出流对象读取或写入数据
        outputStream.write(resources);
        return new String(resources, StandardCharsets.UTF_8);
    } catch (FileNotFoundException e) {
        throw new RuntimeException(e);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }

}

Java IO 学习总结(二) 正在完善中,后续更新~


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

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

相关文章

电子蜡烛灯单片机开发方案

LED蜡烛灯可以像真正的蜡烛一样发出舒适的闪烁光,具有仿真蜡烛效果,适合在一些聚会或庆祝活动中使用。宇凡微推出的低成本LED蜡烛灯IC方案,根据不同电子蜡烛灯方案,主控芯片推荐使用YF单片机。 LED蜡烛灯是有孩子的家庭很好蜡烛替…

【51单片机疑难杂症】:基于普中科技51单片机-A3型号开发板 ds18b20温度传感器和ds1302时钟芯片(板载)冲突现象的解答

项目场景: 当使用普中科技A3型号,准备开发板载的ds1302和温度ds18b20,出现了两者不能共用的问题,以下是问题记录与解答,大家如果觉得有用,请关注点赞哦。谢谢大家。 问题描述 基于普中科技51单片机-A3型号开发板 ds18b…

js 给图片添加水印

如何在图片上添加水印? 1、把图片或者图片文件转成image元素 2、把转成的image转成canvas 3、在生成的canvas中添加水印 先看效果 1、把图片或者图片文件转成image元素 function urlToImg(url) {return new Promise((resolve, reject) > {const img new Image(…

如何实现在线书签内容替换

书签广泛应用于企业的各种办公自动化业务场景中。例如:在范式合同模板中将甲乙方书签自动替换成具体的公司名称;在红头文件模板中将红头标题书签替换成具体的行政指令;在各种协议模板中将协议日期书签替换为当前日期;等等。 在这…

低代码赛道拥挤 生态聚合成为破局关键

在云计算和移动互联网的强劲推动下,企业数字化转型的步伐正在加速,对于软件应用开发的需求也呈现出爆发式的增长。这样的背景下,低代码平台凭借其独特的优势迅速崛起并引发了业界的广泛关注。 自2020年以来,低代码领域已成为投资…

5年测试岗,自动化测试经验总结(真实)他的测试之路高歌猛进...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 8年测试工程师的自…

软考A计划-2023系统架构师-知识点集锦(2/4)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

26键 or 九宫格?不论哪个都不耽误黑客们窃取你的信息!

我妈找我说,可以邮寄杨梅了。我二话不说,直接开始给她我的邮寄地址。快速输入的地址让我想到一个问题,现在的输入法是不是知道的太多了? 我只要打出“浙江省杭州市”,联想出来的就是我所在的市区和街道,下…

【git切换分支/tag】git stash保存暂不提交的更改

目录 问题git stash使用方法git stash pop 还原修改 git stash使用、修改指定tag的代码 其他git指令 问题 情景:分支1上开发新功能,临时切换到其他分支或tag上修改bug。 1、直接切换:如果没有冲突,分支1的修改会带到要切换的分支…

Python-深入不出的字符串

深入不出的字符串 字符串是由独立字符组成的一个序列,通常包含在单引号(‘’)双引号 (“”)或者三引号之中(‘’’ ‘’或"“” “”",两者一样),比如下面几种…

感觉被榨干了,被美团拷打一小时...

普通本科毕业后,进了一家互联网公司,这几年里不断在积累经验,最终选择跳到美团,涨薪了50%,下面分享一下我个人的面经和一些心得建议。 面经 面团一面 自我介绍专业技能一条条核对下来 有软件测试流程、用例设计方法…

Layui项目实战

使用语言&#xff1a;C#&#xff0c;Js&#xff0c;Html 使用框架&#xff1a;MVC&#xff0c;Layui 使用插件&#xff1a;JQuery&#xff0c;Layui 一.Layui父窗体前端代码&#xff1a; 1.Html代码&#xff1a; <div class"layui-col-md12" style"paddin…

如今做泛娱乐出海,你需要融云《社交泛娱乐出海作战地图》

出海需要的从来都不是上头&#xff0c;而是专业。关注【融云全球互联网通信云】了解更多 星期四的下午&#xff0c;笔者收到了一份特殊的“投喂”——一份详实到出乎意料的《社交泛娱乐出海作战地图》&#xff08;下称《作战地图》&#xff09;。 内容上&#xff0c;它覆盖了从…

英语、数学不精,还可以选择IT行业吗?

临近毕业季择校季&#xff0c;又有一群小伙伴面临着无法确定专业选择方向的难题。 就IT行业来说&#xff0c;有很多同学会有这样的疑问&#xff1a; 对计算机专业的不是十分了解&#xff0c;能学吗&#xff1f; 之前数学不太好&#xff0c;怎么学编程&#xff1f; 学编程对…

Python 接口测试之Excel表格数据操作方法封装

引言 我们在做接口测试&#xff0c;经常会用到excel去管理测试数据&#xff0c;对Excel的操作比较频繁&#xff0c;那么使用python如何操作Excel文件的读与写呢&#xff1f;由于之前讲的都是大的框框&#xff0c;没有讲这么小的模块使用&#xff0c;现在就化整为0的讲解。 读…

黑客工具软件大全

黑客工具软件大全100套 给大家准备了全套网络安全梓料&#xff0c;有web安全&#xff0c;还有渗透测试等等内容&#xff0c;还包含电子书、面试题、pdf文档、视频以及相关的网络安全笔记 &#x1f447;&#x1f447;&#x1f447; 《黑客&网络安全入门&进阶学习包》 &a…

深度学习笔记之Seq2seq(三)注意力机制的执行过程

深度学习笔记之Seq2seq——注意力机制的执行过程 引言回顾&#xff1a;经典 Seq2seq \text{Seq2seq} Seq2seq模型中 Context \text{Context} Context向量的缺陷注意力机制的动机 Seq2seq \text{Seq2seq} Seq2seq中的 Attention \text{Attention} Attention结构注意力模型的数学…

chatgpt赋能python:Python如何合并集合?

Python如何合并集合&#xff1f; 在Python编程中&#xff0c;合并多个集合是一项常见的任务。集合合并在数据处理和分析领域中极为常见&#xff0c;例如在合并用户数据时&#xff0c;需要将多个相同字段的集合合并为一个完整的集合。 本文将介绍如何在Python中合并集合&#…

【语音之家】AI产业沙龙 —— 解读火山语音团队在国际顶会ACL2023的创新突破

由CCF语音对话与听觉专委会 、中国人工智能产业发展联盟&#xff08;AIIA&#xff09;评估组、火山语音、语音之家、希尔贝壳共同主办的【语音之家】AI产业沙龙——解读火山语音团队在国际顶会ACL2023的创新突破&#xff0c;将于2023年6月14日19:00-20:20线上直播。 沙龙简介 …

JVM中方法区、永久代、元空间详解以及关系?

首先我们需要先复习一下jvm的大致内存图&#xff0c;如下&#xff1a; 哦~ &#xff0c;想起来了&#xff0c;原来方法区属于jvm的运行时数据区&#xff0c;且作用就是存储类信息、方法信息、常量池信息等静态数据。 &#xff08;补充一下&#xff1a;运行时数据区中的红色是指…