滚雪球学Java(75):Java零基础,轻松学会文件读写技巧

news2025/6/8 5:25:36

在这里插入图片描述

  咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~


🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

文章目录

  • 前言
  • 摘要
  • 正文
    • 简介
    • 源代码解析
    • 应用场景案例
    • 优缺点分析
    • 类代码方法介绍
    • 测试用例
      • 测试代码
      • 测试代码分析
      • 测试结果
    • 全文小结
  • 总结
    • 附录源码
  • ☀️建议/推荐你
  • 📣关于我

前言

  Java作为一种强大而广泛应用的编程语言,文件读写是其重要的应用之一。无论是读取数据还是写入数据,文件读写技巧都是Java开发中必备的基础知识。本文将带领读者从零基础开始学习Java文件读写技巧,通过一步一步的实例,帮助读者轻松掌握该技能。

摘要

  本文将通过介绍Java文件读写的基础概念和方法,结合源代码解析和应用场景案例,对文件读写技巧进行深入探讨。同时,还将对文件读写技巧的优缺点进行分析,并提供一些常用的类代码方法介绍和测试用例,以便读者更好地理解和应用这些技巧。

正文

简介

  文件读写是指通过计算机对文件进行读取和写入操作的过程。在Java中,文件读写主要通过输入输出流来实现。输入流用于读取文件数据,输出流用于写入文件数据。Java提供了丰富的输入输出类和方法,可以轻松实现文件读写操作。掌握文件读写技巧不仅可以方便地读取和存储数据,还可以实现文件的复制、移动、删除等操作。

源代码解析

在Java中,文件读写主要涉及到以下几个类和方法:

  • File类:表示文件和目录的抽象路径名,可以用于判断文件是否存在、创建文件、获取文件信息等操作。
  • FileReader类:用于读取字符文件的便捷类,可以按字符读取文件内容。
  • FileWriter类:用于写入字符文件的便捷类,可以按字符写入文件内容。
  • FileInputStream类:用于读取字节文件的便捷类,可以按字节读取文件内容。
  • FileOutputStream类:用于写入字节文件的便捷类,可以按字节写入文件内容。

通过使用以上类和方法,可以实现各种类型的文件读写操作。

应用场景案例

文件读写技巧在实际开发中有广泛的应用场景,例如:

  • 读取配置文件:可以将配置信息存储在文件中,通过文件读写技巧读取配置信息,实现程序的配置化。
  • 数据存储和加载:可以将程序生成的数据存储到文件中,下次程序启动时再从文件中加载数据,实现数据的持久化。
  • 文件操作:可以通过文件读写技巧实现文件的复制、移动、删除等操作,方便地管理文件。

优缺点分析

文件读写技巧的优点包括:

  • 方便实用:通过文件读写技巧可以方便地读取和存储数据,实现文件的复制、移动、删除等操作。
  • 数据持久化:通过将数据存储在文件中,可以实现数据的持久化,下次程序启动时还可以加载数据。
  • 配置化管理:通过将配置信息存储在文件中,可以实现程序的配置化,方便后期维护和修改。

文件读写技巧的缺点包括:

  • 对文件的依赖性:文件读写技巧需要依赖于文件系统,如果文件不存在或者文件路径不正确,将导致操作失败。
  • 安全性问题:文件读写技巧存在一定的安全性问题,例如文件内容的被篡改、文件的访问权限等。

类代码方法介绍

  1. 判断文件是否存在:
File file = new File("path/to/file.txt");
if (file.exists()) {
    // 文件存在
} else {
    // 文件不存在
}
  1. 创建文件:
File file = new File("path/to/file.txt");
try {
    if (file.createNewFile()) {
        // 文件创建成功
    } else {
        // 文件创建失败
    }
} catch (IOException e) {
    // 异常处理
}
  1. 读取文件内容:
FileReader reader = new FileReader("path/to/file.txt");
char[] buffer = new char[1024];
int length;
while ((length = reader.read(buffer)) != -1) {
    String content = new String(buffer, 0, length);
    // 处理文件内容
}
reader.close();
  1. 写入文件内容:
FileWriter writer = new FileWriter("path/to/file.txt");
String content = "Hello, world!";
writer.write(content);
writer.close();

代码解析:

  给定的代码片段展示了如何在Java中进行文件的存在检查、创建、读取和写入操作。

  1. 在给定路径下创建一个File对象,并使用exists()方法检查文件是否存在。如果文件存在,执行相应的操作;否则,执行其他操作。

  2. 使用给定路径创建一个File对象,并使用createNewFile()方法创建一个新的文件。如果文件创建成功,执行相应的操作;否则,执行其他操作。需要注意的是,如果文件已经存在,则会返回false

  3. 使用FileReader类以字符方式读取文件内容。首先创建一个FileReader对象,并使用read()方法将文件内容读取到字符数组中。然后使用String的构造函数将字符数组转换为字符串,并在循环中处理文件内容。最后,关闭FileReader对象。

  4. 使用FileWriter类以字符方式写入文件内容。首先创建一个FileWriter对象,并使用write()方法将字符串内容写入文件。最后,关闭FileWriter对象。

  请注意,在进行文件操作时,需要适当处理可能抛出的异常,例如IOException

测试用例

测试代码

package com.demo.javase.day75;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @Author bug菌
 * @Date 2023-12-27 17:03
 */
public class FileReadWriteTest {

    public static void main(String[] args) {
        // 读取文件内容
        try {
            FileReader reader = new FileReader("./input.txt");
            char[] buffer = new char[1024];
            int length;
            while ((length = reader.read(buffer)) != -1) {
                String content = new String(buffer, 0, length);
                System.out.println(content);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 写入文件内容
        try {
            FileWriter writer = new FileWriter("./output.txt");
            String content = "Hello, world!";
            writer.write(content);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

测试代码分析

  根据如上测试用例,在此我给大家进行深入详细的解读一下测试代码,以便于更多的同学能够理解并加深印象。

  这段代码展示了如何使用Java的FileReader和FileWriter类进行文件的读写操作。

  首先,在main方法中,我们使用FileReader类创建一个名为reader的对象,指定要读取的文件路径为"path/to/input.txt"。然后使用一个char型的buffer数组来存储读取到的字符,初始化长度为1024。接着,通过while循环,不断地调用reader.read(buffer)方法,将读取到的字符数据存储到buffer数组中,并返回读取到的字符数。当读取到的字符数为-1时,表示文件已经读取完毕,循环停止。然后,我们将buffer数组中的字符数据转换为字符串,并通过System.out.println方法输出到控制台。最后,我们调用reader.close()方法关闭文件读取流,释放资源。如果在读取文件的过程中发生了异常,我们通过catch块中的e.printStackTrace()方法打印异常信息。

  接下来,在第二个try块中,我们使用FileWriter类创建一个名为writer的对象,指定要写入的文件路径为"path/to/output.txt"。然后,我们使用writer.write(content)方法将字符串"Hello, world!"写入到文件中。最后,通过writer.close()方法关闭文件写入流,释放资源。同样地,如果在写入文件的过程中发生了异常,我们通过catch块中的e.printStackTrace()方法打印异常信息。

  总结起来,这段代码展示了如何使用Java的文件读写流来读取和写入文件的内容。读取文件时,我们使用FileReader和char型的buffer数组,通过循环读取并输出文件内容;写入文件时,我们使用FileWriter和write方法,将指定的字符串内容写入到指定的文件中。

测试结果

  根据如上的测试用例,作者在本地进行测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加其他的测试数据或测试方法,以便于进行熟练学习以此加深知识点的理解。


在这里插入图片描述

全文小结

  通过本文的学习,我们了解了Java文件读写技巧的基础概念和实现方法。我们学习了文件读写的基本类和方法,掌握了文件的创建、读取和写入操作。我们还通过应用场景案例和优缺点分析,进一步了解了文件读写技巧的实际应用和相关注意事项。最后,我们提供了一些常用的类代码方法介绍和测试用例,帮助读者更好地掌握和应用文件读写技巧。

总结

  文件读写技巧是Java开发中重要的基础知识,通过学习和掌握文件读写技巧,我们可以方便地操作文件,读取和存储数据。本文通过详细的介绍和实例演示,帮助读者从零基础开始学习和理解文件读写技巧。希望读者通过本文的学习,能够轻松掌握Java文件读写技巧,并在实际开发中灵活运用。

  … …

  好啦,这期的内容就基本接近尾声啦,若你想学习更多,你可以看看专栏的导读篇《「滚雪球学Java」教程导航帖》,本专栏致力打造最硬核 Java 零基础系列学习内容,🚀打造全网精品硬核专栏,带你直线超车;欢迎大家订阅持续学习。功不唐捐,久久为功!

「赠人玫瑰,手留余香」,咱们下期拜拜~~

附录源码

  如上涉及所有源码均已上传同步在「Gitee」,提供给同学们一对一参考学习,辅助你更迅速的掌握。

☀️建议/推荐你

  无论你是计算机专业的学生,还是对编程感兴趣的跨专业小白,都建议直接入手「滚雪球学Java」专栏;该专栏不仅免费,bug菌还郑重承诺,只要你学习此专栏,均能入门并理解Java SE,以全网最快速掌握Java语言,每章节源码均同步「Gitee」,你真值得拥有;学习就像滚雪球一样,越滚越大,带你指数级提升。

  码字不易,如果这篇文章对你有所帮助,帮忙给bugj菌来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。

  同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 20w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。


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

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

相关文章

mp3怎样才能转换成wav格式?音频互相转换的方法

一,什么是WAV WAV,全称为波形音频文件(Waveform Audio File Format),是一种由微软公司和IBM公司联合开发的音频文件格式。自1991年问世以来,WAV格式因其无损的音频质量和广泛的兼容性,成为了多…

【Godot4.2】CanvasItem绘图函数全解析 - 7.自定义节点TextBoard

概述 之前发布的几篇文章几乎阐述了CanvasItem绘图函数最基础的内容。 本篇结合draw_style_box()和TextParagraph类,自定义了一个可以自适应宽高显示多行文本,且带有一个样式盒作为背景的文字板节点TextBoard。 系列目录 0.概述1.绘制简单图形2.设定绘…

kali工具----域名IP及路由跟踪

域名IP及路由跟踪 测试网络范围内的IP地址或域名也是渗透测试的一个重要部分。通过测试网络范围内的IP地址或域名,确定是否有人入侵自己的网络中并损害系统。不少单位选择仅对局部IP基础架构进行渗透测试,但从现在的安全形势来看,只有对整个I…

RHCE--dns正反向解析小实验

一、准备工作 1.关闭防火墙 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld 2.安装软件 [rootserver ~]# yum install bind -y 二、正向解析 服务端IP客户端IP网址192.168.203.128192.168.203.130www.openlab.com 服务端配置静态ip [root…

人工智能|机器学习——基于机器学习的信用卡办卡意愿模型预测项目

一、背景介绍 在金融领域,了解客户的信用卡办卡意愿对于银行和金融机构至关重要。借助机器学习技术,我们可以根据客户的历史数据和行为模式预测其是否有办理信用卡的倾向。本项目通过Python中的机器学习库,构建了两个常用的分类模型&#xff…

Mistral AI突围:开源大模型Mixtral 8x22B颠覆行业格局

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Spark-Scala语言实战(16)

在之前的文章中,我们学习了三道任务,运用之前学到的方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战&#x…

开发板仿真网站(wokwi)初次上手指南(Arduino UNO项目)

在本篇文章中将详细介绍在开发板仿真网站(wokwi)上实现Arduino UNO控制LED灯亮灭。 将学习到如何连接部件、编写代码并在线模拟Arduino项目! 开发板仿真网站(wokwi)简介 可参考《一个免费的在线的开发板仿真网站&#…

IEDA 启动项目时出现 java: java.lang.OutOfMemoryError: GC overhead limit exceeded 异常

问题 通过Idea启动项目时,出现java: java.lang.OutOfMemoryError: GC overhead limit exceeded 内存溢出问题; 解决方案 错误是发生在编译阶段,而不是运行阶段: 【1】idea编译Java项目使用的虚拟机和idea软件自身使用的虚拟机是…

【Linux】应用层协议:HTTP

URL 在之前的文章中我们实现了一个网络版本的计算器,在那个计算器中揉合了协议定制以及序列化反序列化的内容,我们当时也自己定制了一套协议标准,比如请求和响应的格式应该是什么?如何读到一个完整的报文?支持的运算符…

无人机巡检技术革命性变革光伏电站运维管理

在中国广袤的大地上,光伏电站如雨后春笋般崛起,晶体硅组件板在阳光下熠熠生辉,为人们带来了源源不断的绿色能源。然而,随着光伏产业的迅猛发展,电站运维管理面临着前所未有的挑战。而无人机巡检技术的引入,…

MySQL进阶-合

目录 1.使用环境 2.条件判断 2.1.case when 2.2.if 3.窗口函数 3.1.排序函数 3.2.聚合函数 3.3.partiton by ​​​​​​​3.4.order by 4.排序窗口函数 5.聚合窗口函数 1.使用环境 数据库:MySQL 8.0.30 客户端:Navicat 15.0.12 MySQL进阶…

Spring Boot | Spring Boot 整合 “Servlet三大组件“ ( Servlet / Filter / Listene )

目录: Spring Boot 整合 "Servlet三大组件" :1. 使用 "组件注册" 的方式 "整合Servlet三大组件" ( 实际操作为 : 创建自定义的"三大组件"对象 结合刚创建"的自定义组件对象"来 将 XxxRegistrationBean对象 通过…

桥接模式:解耦抽象与实现的设计艺术

在软件设计中,桥接模式是一种结构型设计模式,旨在将抽象部分与其实现部分分离,使它们可以独立地变化。这种模式通过提供更加灵活的代码结构帮助软件开发人员处理不断变化的需求,特别是在涉及多平台应用开发时。本文将详细介绍桥接…

Unet++(pytorch实现)

Unet网络 Dense connection Unet继承了Unet的结构,同时又借鉴了DenseNet的稠密连接方式(图1中各种分支)。 作者通过各层之间的稠密连接,互相连接起来,就像Denset那样,前前后后每一个模块互相作用&#xf…

Ubuntu20.04版本命令行设置挂载磁盘,并设置开机自动挂载

最近部署应用 系统是Ubuntu20.4版本的Linux系统,加了数据盘,需要格式化后挂载,记录下: Linux 数据盘挂载(采用 parted 分区工具)-格式化为 ext4 1. 初始化 Linux 数据盘 挂载数据盘后或者随实例创建时一并创建的数据盘&#xff…

GAMS104 现代游戏引擎 2

渲染的难点可以分为一下三部分:如何计算入射光线、如何考虑材质以及如何实现全局光照。 渲染的难点之一在于阴影,或者说是光的可见性。如何做出合适的阴影效果远比想象中要难得多,在实践中往往需要通过大量的技巧才能实现符合人认知的阴影效…

Java 设计模式系列:模板方法模式

简介 模板方法模式是一种行为型设计模式,它定义一个操作中的算法骨架,将一些步骤推迟到子类中。模板方法模式使得子类可以不改变一个算法的结构,即可重定义该算法的某些特定步骤。 在模板方法模式中,抽象类中定义了一系列基本操…

【Web】DASCTF 2023 0X401七月暑期挑战赛题解

目录 EzFlask MyPicDisk ez_cms ez_py 让俺看看401web题 EzFlask 进来直接给了源码 import uuidfrom flask import Flask, request, session from secret import black_list import jsonapp Flask(__name__) app.secret_key str(uuid.uuid4())def check(data):for i i…

数据库(3)

目录 11.那你知道什么是覆盖索引和回表吗? 12.什么是MVCC?说说MySQL实现MVCC的原理? 13.MySQL的锁的类型有哪些呢? 14.你们数据量级多大?分库分表是怎么做的? 15.分表后非分库字段sharding_key的查询怎…