当前位置: 首页 > news >正文

Java零基础入门-输入与输出

哈喽,各位小伙伴们,你们好呀,我是喵手。

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

Java作为一种流行的编程语言,为开发人员提供了许多灵活的输入和输出方式。本文将介绍Java的输入输出(I/O)基础知识并提供相关示例。这些示例将帮助读者更好地理解Java的输入输出。

摘要

在Java中,输入和输出是通过流(stream)实现的。流表示从输入源(如文件或网络)获取数据或将数据发送到输出目标的方式。

Java的I/O包提供了许多与文件、控制台、网络和其他I/O设备的交互方式。Java中的流有两种类型:字节流和字符流。字节流可以读取字节和写入字节,字符流可以读取字符和写入字符。

Java之输入与输出

简介

Java的I/O包提供了许多类和接口来执行输入和输出操作。这些类和接口包括File类、InputStream和OutputStream类、Reader和Writer类、BufferedReader和PrintWriter类、DataInputStream和DataOutputStream类等等。

在使用Java进行文件I/O时,我们通常需要指定文件的路径。Java中的文件路径可以是相对路径或绝对路径。相对路径是相对于Java运行时的当前目录,而绝对路径则是从该文件系统的根开始的完整路径。

源代码解析

写入文件

下面的代码示例演示了如何使用Java的FileWriter类将数据写入文件:

import java.io.FileWriter;
import java.io.IOException;public class WriteToFile {public static void main(String[] args) {String data = "Hello, World!";String fileName = "output.txt";try {FileWriter writer = new FileWriter(fileName);writer.write(data);writer.close();System.out.println("Data has been written to the file.");} catch (IOException e) {System.out.println("An error occurred.");e.printStackTrace();}}
}

上面的代码创建了一个名为output.txt的文件并将字符串“Hello, World!”写入其中。使用FileWriter类可以很容易地完成这个任务。

读取文件

下面的代码示例演示了如何使用Java的FileReader类从文件中读取数据:

import java.io.FileReader;
import java.io.IOException;public class ReadFromFile {public static void main(String[] args) {String fileName = "input.txt";try {FileReader reader = new FileReader(fileName);int character;while ((character = reader.read()) != -1) {System.out.print((char) character);}reader.close();} catch (IOException e) {System.out.println("An error occurred.");e.printStackTrace();}}
}

上面的代码创建了一个名为input.txt的文件并从文件中读取所有内容。在这个示例中,我们使用了FileReader类来实现。使用while循环一次读取一个字符,直到达到文件的结尾。最后,我们关闭了reader对象以便释放资源。

应用场景案例

Java的I/O包可以在许多方面帮助我们处理文件和其他数据源。以下是一些使用Java I/O执行的常见任务:

  1. 读取和解析CSV文件。
  2. 从URL中读取HTML数据。
  3. 通过网络发送和接收数据。
  4. 将数据写入数据库。

优缺点分析

Java I/O的主要优点是它提供了许多不同类型的流以处理各种数据类型。Java I/O还提供了灵活的API,使开发人员可以使用不同的输入/输出源并以不同的方式处理数据。另外,Java I/O是平台无关的,因此可以在不同的操作系统上运行。Java I/O的主要缺点是它可能会变得相当复杂,尤其是当涉及到处理大量数据时。

类代码方法介绍

File类

File类提供了用于创建、删除、重命名和查找文件和目录的方法。以下是一些常用的File类方法:

public boolean exists()

该方法返回一个布尔值,指示该文件或目录是否存在。

public boolean isDirectory()

该方法返回一个布尔值,指示该File对象是否代表一个目录。

public boolean isFile()

该方法返回一个布尔值,指示该File对象是否代表一个文件。

InputStream和OutputStream类

InputStream和OutputStream类是Java I/O中最基本的类之一。InputStream类表示从输入源读取数据的输入流。OutputStream类表示将数据写入输出目标的输出流。以下是一些常用的InputStream和OutputStream类方法:

public abstract int read() throws IOException

该方法从输入流中读取下一个字节,并返回一个int类型的值。如果已经到达流的末尾,则返回-1。

public void write(byte[] b) throws IOException

该方法将一个字节数组写入输出流。

BufferedReader和PrintWriter类

BufferedReader和PrintWriter类是Java I/O中一个非常有用的工具。BufferedReader类提供了一种逐行读取输入的方式,PrintWriter类则提供了一种将对象格式化为文本并写入输出的方式。以下是一些常用的BufferedReader和PrintWriter类方法:

public String readLine() throws IOException

该方法从输入流中读取一行文本,并返回一个字符串。如果已经到达流的末尾,则返回null。

public void println(Object obj)

该方法将一个对象转换为字符串,并将其写入输出流。它还将自动附加一个换行符。

DataInputStream和DataOutputStream类

DataInputStream和DataOutputStream类提供了一种将Java类型转换为字节数据以写入输出流的方式,以及将字节数据转换回Java类型以读取输入流的方式。以下是一些常用的DataInputStream和DataOutputStream类方法:

public void writeInt(int value) throws IOException

该方法将一个int类型的值写入输出流。

public int readInt() throws IOException

该方法从输入流中读取四个字节,并将它们转换为一个int类型的值。

测试用例

以下是一个简单的测试用例,用于演示如何在Java中使用文件I/O:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;public class TestFileIO {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("Enter file name: ");String fileName = scanner.nextLine();try {File file = new File(fileName);if (!file.exists()) {file.createNewFile();}FileWriter writer = new FileWriter(file);System.out.print("Enter text: ");String text = scanner.nextLine();writer.write(text);writer.close();System.out.println("Text has been written to the file.");} catch (IOException e) {System.out.println("An error occurred.");e.printStackTrace();}}
}

上面的代码将从用户输入中获取文件名和文本,并将文本写入指定的文件中。如果文件不存在,则会自动创建一个新文件。

全文小结

在本文中,我们介绍了Java的输入输出基础知识,并提供了一些相关示例。我们还讨论了Java I/O的常见应用场景,并分析了其优缺点。最后,我们介绍了一些常用的Java I/O类及其方法,并提供了一个简单的测试用例。

总结

Java的输入和输出是通过流实现的,Java的I/O包提供了许多类和接口来执行输入和输出操作。当使用Java进行文件I/O时,我们需要指定文件的路径,Java中的文件路径可以是相对路径或绝对路径。在处理大量数据时,Java I/O可能会变得相当复杂。Java I/O的主要优点是提供了许多不同类型的流以处理各种数据类型,同时Java I/O还是平台无关的。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

相关文章:

Java零基础入门-输入与输出

哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…...

iOS报错命名空间“std”中的“unary_function”

刚刚将我的 Xcode 升级到 15.0,突然它开始在 RCT_Folly 中出现以下错误 No template named unary_function in namespace std; did you mean __unary_function?我尝试删除缓存数据和派生数据并清理构建。也尝试删除 pod 和 node_modules。但没有任何帮助。 于是我…...

Flink SQL 窗口聚合详解

1.滚动窗⼝(TUMBLE) **滚动窗⼝定义:**滚动窗⼝将每个元素指定给指定窗⼝⼤⼩的窗⼝,滚动窗⼝具有固定⼤⼩,且不重叠。 例如,指定⼀个⼤⼩为 5 分钟的滚动窗⼝,Flink 将每隔 5 分钟开启⼀个新…...

中间件redis的使用

Java中的中间件配置体现在springboot的yml配置文件中。Springboot框架支持微服务和中间件和restful api远程服务的调用。中间件是Java web系统的中间层的服务系统的调用接口。Springboot的自动装配和约定大于配置机制初始化springcontext的容器空间和注册组件。使用容器管理服务…...

Why delete[] array when deepcopying with “=“?

代码负责释放对象之前已经分配的资源,比如堆上的内存。在执行深拷贝之前,你需要确保对象不再引用之前的资源,以避免内存泄漏。通过删除先前的资源,你可以确保在进行深拷贝之前,已经释放了之前的资源,从而避…...

curl(六)DNS解析、认证、代理

一 DNS解析 ① ip协议 使用ipv4 [-4] 还是ipv6 [-6] ② --resolve 场景: 在不修改系统配置文件 /etc/hosts 的情况下将单个请求临时固定到 ip 地址 1、使用 * 作为通配符,这样请求中调用的所有 Host 都 会转到你指定的 ip curl https://www.wzj.com --resolv…...

(免费领源码)PHP#MySQL高校学生信息管理系统28099-计算机毕业设计项目选题推荐

摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用php技术建设学生信息管理系统设计。…...

[动态规划] (四) LeetCode 91.解码方法

[动态规划] (四) LeetCode 91.解码方法 91. 解码方法 题目解析 (1) 对字母A - Z进行编码1-26 (2)11106可以解码为1-1-10-6或者11-10-6, 但是11-1-06不能解码 (3) 0n不能解码 (4) 字符串非空,返回解码方法的总数 解题思路 状态表示 dp[i]:以i为结…...

Vue Vuex的使用和原理 专门解决共享数据的问题

Vuex专门解决共享数据的问题 多组件共享时使用,如用户ID各组件需要根据ID发送请求获取数据,任意组件可以进行增删改,相当于全局变量 Vuex 工作流程 如果确定值参数可以不经过Actions 直接走 安装Vuex vue2使用 vuex3 vue3使用 vuex4 npm i…...

第九周实验记录

1、安装Nerfstudio 环境配置 首先需要创建环境python3.8,接着需要安装cuda11.7或11.3 这里安装cuda11.7 pip uninstall torch torchvision functorchpip install torch1.13.1 torchvision functorch --extra-index-url https://download.pytorch.org/whl/cu117安…...

STM32WB55开发(6)----FUS更新

STM32WB55开发.6--FUS更新 概述视频教学硬件准备存储器映射FLASH安全区设置SRAM安全区设置通过USB进行下载注意事项 概述 在 STM32WB 微控制器中,FUS(Firmware Upgrade Services)是用于固件升级的一种服务。这项服务可以让你更新设备上的无…...

centos关闭Java进程的脚本

centos关闭Java进程的脚本,有时候服务就是个jar包,关闭程序又要找到进程ID,在kill掉,麻烦,这里就写了个脚本 小白教程,一看就会,一做就成。 1.脚本如下 #!/bin/bash ps -ef | grep java | gre…...

深度学习网络模型 MobileNet系列MobileNet V1、MobileNet V2、MobileNet V3网络详解以及pytorch代码复现

深度学习网络模型 MobileNet系列MobileNet V1、MobileNet V2、MobileNet V3网络详解以及pytorch代码复现 1、DW卷积与普通卷积计算量对比DW与PW计算量普通卷积计算量计算量对比 2、MobileNet V1MobileNet V1网络结构MobileNet V1网络结构代码 3、MobileNet V2倒残差结构模块倒残…...

Spring 中 BeanFactory 和 FactoryBean 有何区别?

这也是 Spring 面试时一道经典的面试问题,今天我们来聊一聊这个话题。 其实从名字上就能看出来个一二,BeanFactory 是 Factory 而 FactoryBean 是一个 Bean,我们先来看下总结: BeanFactory 是 Spring 框架的核心接口之一&#xf…...

黑马程序员项目-黑马点评

黑马点评1 短信登录 基于Session实现登录流程 发送验证码: 用户在提交手机号后,会校验手机号是否合法,如果不合法,则要求用户重新输入手机号 如果手机号合法,后台此时生成对应的验证码,同时将验证码进行…...

ubuntu 20.04 + Anaconda + cuda-11.8 + opencv-4.8.0(cuda)

环境:一键编译opencv-4.8.0(cuda),前提是已经安装好了cuda和cudnn Anaconda安装 参考: https://blog.csdn.net/weixin_46947765/article/details/130980957 opencv4.8.0编译安装 一键编译shell脚本 VERSION4.8.0test -e ${VERSION}.zip || wget http…...

Linux 目录

目录 1. Linux 目录1.1. 目录 /usr/bin 和 /usr/local/bin 区别 1. Linux 目录 1.1. 目录 /usr/bin 和 /usr/local/bin 区别 /usr/bin 下面的都是系统预装的可执行程序, 系统升级有可能会被覆盖。/usr/local/bin 目录是给用户放置自己的可执行程序。...

Linux shell编程学习笔记21:用select in循环语句打造菜单

一、select in循环语句的功能 Linux shell脚本编程提供了select in语句,这是 Shell 独有的一种循环语句,非常适合终端(Terminal)这样的交互场景,它可以根据用户的设置显示出带编号的菜单,用户通过输入不同…...

线性回归与线性拟合的原理、推导与算法实现

关于回归和拟合,从它们的求解过程以及结果来看,两者似乎没有太大差别,事实也的确如此。从本质上说,回归属于数理统计问题,研究解释变量与响应变量之间的关系以及相关性等问题。而拟合是把平面的一系列点,用…...

【C++】set和multiset

文章目录 关联式容器键值对一、set介绍二、set的使用multiset 关联式容器 STL中的部分容器,比如:vector、list、deque、forward_list(C11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络&#xf…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

GitHub 趋势日报 (2025年06月06日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...