以下是 Java 中常用的 IO 知识点总结:

1. 流的分类

  • 按数据流向:输入流(读取数据)和输出流(写入数据)。
  • 按数据类型:字节流(处理二进制数据,以字节为单位)和字符流(处理文本数据,以字符为单位)。

2. 字节流

2.1 输入流:FileInputStream

用于从文件中读取字节数据。

import java.io.FileInputStream;
import java.io.IOException;public class FileInputStreamExample {public static void main(String[] args) {try (FileInputStream fis = new FileInputStream("file/a.txt")) {int data;while ((data = fis.read()) != -1) {System.out.print((char) data);}} catch (IOException e) {e.printStackTrace();}}
}
2.2 输出流:FileOutputStream

用于向文件中写入字节数据。

import java.io.FileOutputStream;
import java.io.IOException;public class FileOutputStreamExample {public static void main(String[] args) {try (FileOutputStream fos = new FileOutputStream("file/a.txt")) {String str = "Hello World!";byte[] bs = str.getBytes();fos.write(bs);} catch (IOException e) {e.printStackTrace();}}
}

3. 字符流

3.1 输入流:FileReader

用于从文件中读取字符数据。

import java.io.FileReader;
import java.io.IOException;public class FileReaderExample {public static void main(String[] args) {try (FileReader fr = new FileReader("file/a.txt")) {int data;while ((data = fr.read()) != -1) {System.out.print((char) data);}} catch (IOException e) {e.printStackTrace();}}
}
3.2 输出流:FileWriter

用于向文件中写入字符数据。

import java.io.FileWriter;
import java.io.IOException;public class FileWriterExample {public static void main(String[] args) {try (FileWriter fw = new FileWriter("file/a.txt")) {String str = "Hello, 世界";fw.write(str);} catch (IOException e) {e.printStackTrace();}}
}

4. 缓冲流

为了提高读写效率,可以使用缓冲流。

4.1 字节缓冲流:BufferedInputStreamBufferedOutputStream
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class BufferedOutputStreamExample {public static void main(String[] args) {try (FileOutputStream fos = new FileOutputStream("file/d.txt");BufferedOutputStream bos = new BufferedOutputStream(fos)) {bos.write(97);bos.write(98);} catch (IOException e) {e.printStackTrace();}}
}
4.2 字符缓冲流:BufferedReaderBufferedWriter
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class BufferedReaderWriterExample {public static void main(String[] args) {try (BufferedReader br = new BufferedReader(new FileReader("file/a.txt"));BufferedWriter bw = new BufferedWriter(new FileWriter("file/b.txt"))) {String line;while ((line = br.readLine()) != null) {bw.write(line);bw.newLine();}} catch (IOException e) {e.printStackTrace();}}
}

5. 对象序列化与反序列化

使用 ObjectOutputStreamObjectInputStream 可以将对象写入文件和从文件中读取对象。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;class Student implements Serializable {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public int getAge() {return age;}
}public class ObjectSerializationExample {public static void main(String[] args) {// 序列化try (FileOutputStream fos = new FileOutputStream("file/student.dat");ObjectOutputStream oos = new ObjectOutputStream(fos)) {Student s = new Student("lz", 19);oos.writeObject(s);} catch (IOException e) {e.printStackTrace();}// 反序列化try (FileInputStream fis = new FileInputStream("file/student.dat");ObjectInputStream ois = new ObjectInputStream(fis)) {Student s = (Student) ois.readObject();System.out.println(s.getName() + " " + s.getAge());} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}}
}

6. 文件操作

使用 File 类可以进行文件和目录的操作,如创建、删除、重命名等。

import java.io.File;
import java.io.IOException;public class FileExample {public static void main(String[] args) {File f = new File("a.txt");try {if (f.createNewFile()) {System.out.println("文件创建成功");} else {System.out.println("文件已存在");}} catch (IOException e) {e.printStackTrace();}if (f.delete()) {System.out.println("文件删除成功");} else {System.out.println("文件删除失败");}}
}

通过掌握以上知识点,你可以快速上手 Java 中的 IO 操作。

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

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

相关文章

小程序软装: 组件库开发

本节概述 经过前面小节的学习,我们已经搭建起了小程序的编译构建环境,能够将我们开发的小程序项目编译成为对应的逻辑代码文件 logic.js,页面渲染文件 view.js,样式文件 style.css 和配置文件 config.json 在编译小程序的过程中…

250708-Debian系统安装Edge浏览器并配置最小中文输入法

在 Debian 系统上安装 Microsoft Edge 浏览器可以通过以下几种方式进行。Microsoft 官方提供了 .deb 安装包,适用于 Debian、Ubuntu 及其衍生系统。 A. 如何安装? ✅ 方法一:使用 .deb 安装包(推荐) 步骤 1&#xff…

docker所占硬盘内存指令

使用下面命令可以查看docker所占的硬盘大小,如:docker system dfdocker system df -v

A1126LLHLX-T Allegro霍尔效应锁存器,5kHz+推挽输出,汽车级转速检测专家!

A1126LLHLX-T(Allegro)产品解析一、产品定位A1126LLHLX-T是Allegro MicroSystems推出的全极性霍尔效应锁存器,采用超薄SOT-23W封装(1mm厚度),专为高可靠性位置检测与转速测量设计,具有低功耗、高…

【C#】File从后往前读取文件指定行数

/// <summary>/// 从后往前读取文件最后行数据/// </summary>/// <param name"filePath"></param>/// <param name"count"></param>/// <returns></returns>public static List<string> ReadFileRe…

暑假算法日记第五天

目标​&#xff1a;刷完灵神专题训练算法题单 阶段目标&#x1f4cc;&#xff1a;【算法题单】滑动窗口与双指针 LeetCode题目:683. K 个关闭的灯泡2067. 等计数子串的数量2524. 子数组的最大频率分数2269. 找到一个数字的 K 美丽值1984. 学生分数的最小差值1461. 检查一个字符…

【05】MFC入门到精通——MFC 为对话框中的控件添加变量 和 数据交换和检验

文章目录四、 为对话框中的控件添加变量五、对话框类的5.1 为编辑框添加变量面步骤中 为对话框添加了几个控件&#xff0c;包括三个静态文本框&#xff0c;三个编辑框&#xff0c;一个按钮控件。 四、 为对话框中的控件添加变量 编辑框中的数据可能会经常变化&#xff0c;有必…

4-Kafka-partition(分区)概念

Kafka Topic 分区详解 &#x1f4cc; 一、分区核心概念 1. 什么是分区&#xff1f; 物理分片&#xff1a;Topic 被划分为多个分区&#xff08;Partition&#xff09;&#xff0c;每个分区是一个有序、不可变的消息序列存储单位&#xff1a;每个分区对应一个物理日志文件&…

论文略读:UniPELT: A Unified Framework for Parameter-Efficient Language Model Tuning

ACL 2021 LoRAPrefix TuningAdapter门控蓝色参数是可训练的参数

【论文阅读】CogView: Mastering Text-to-Image Generation via Transformers

CogView&#xff1a;通过Transformers实现文本到图像的生成简介目标&#xff1a;通用领域中的文本到图像生成一直是一个开放的问题&#xff0c;它既需要强大的生成模型&#xff0c;也需要跨模态的理解。为了解决这个问题&#xff0c;我们提出了CogView&#xff0c;一个具有VQ -…

Typecho与WordPress技术架构深度对比:从LAMP到轻量级设计

文章目录 Typecho vs WordPress:深入比较两大博客系统的优劣与选型指南引言1. 系统概述与技术架构1.1 WordPress架构分析1.2 Typecho架构特点2. 核心功能对比2.1 内容管理能力2.2 主题与模板系统3. 性能与扩展性对比3.1 系统性能基准测试3.2 扩展生态系统4. 安全性与维护成本4…

CSS揭秘:8.连续的图像边框

前置知识&#xff1a;CSS 渐变&#xff0c;5. 条纹背景&#xff0c;border-image&#xff0c;基本的 CSS 动画前言 本文旨在实现图片边框效果&#xff0c;即在特定场景下让图片显示在边框而非背景区域。 一、传统实现方案 正常我们面对这样一个需求时&#xff0c;下意识会想到的…

Linux驱动学习day20(pinctrl子系统驱动大全)

一、Pinctrl作用Pinctrl(Pin Controller)&#xff1a;控制引脚引脚的枚举与命名、引脚复用、引脚配置。Pinctrl驱动一般由芯片原厂的BSP工程师来写&#xff0c;一般驱动工程师只需要在设备树中指明使用哪个引脚&#xff0c;复用为哪个功能、配置为哪些状态。二、Pin Controller…

Debiased All-in-one Image Restoration with Task Uncertainty Regularization

Abstract 一体化图像恢复是一项基础的底层视觉任务&#xff0c;在现实世界中有重要应用。主要挑战在于在单个模型中处理多种退化情况。虽然当前方法主要利用任务先验信息来指导恢复模型&#xff0c;但它们通常采用统一的多任务学习&#xff0c;忽略了不同退化任务在模型优化中的…

逆向 qq 音乐 sign,data, 解密 response 返回的 arraybuffer

解密 arraybuffer python requests 请求得到 arraybuffer&#xff0c;转为 hex 传递给 js res_data sign ctx.call("decrypt", response.content.hex())function decrypt(hex) {const bytes new Uint8Array(hex.length / 2);for (let i 0; i < hex.length; i …

PPT处理控件Aspose.Slides教程:在 C# 中将 ODP 转换为 PPTX

您是否正在寻找可靠的 PowerPoint SDK 来以编程方式开发ODP到PPTX转换器&#xff1f;本篇博文演示了如何使用 C# 将 ODP 转换为 PPTX。ODP是一种基于 XML 的演示文稿文件&#xff0c;可能包含图像、视频、文本等。但是&#xff0c;将打开的文档演示文稿转换为 PowerPoint 格式可…

[746] 使用最小花费爬楼梯

可以从下标0或者1作为起始位置————dp[0] dp[1] 0。一次性可以选择移动1次或者2次&#xff0c;故当下标>2的时候&#xff0c;到达2有可能是从下标0开始或者下标1开始&#xff0c;cost[0] or cost[1]&#xff1b;到达n&#xff0c;有可能是花费cost[n-1]到达&#xff0c…

树莓派vsftpd文件传输服务器的配置方法

在树莓派上安装和配置 vsftpd&#xff08;Very Secure FTP Daemon&#xff09;服务器的步骤如下&#xff1a; 1. 安装 vsftpd 打开终端&#xff0c;执行以下命令安装 vsftpd&#xff1a; sudo apt update sudo apt install vsftpd安装完成后&#xff0c;vsftpd 会自动启动。可以…

4.服务注册发现:微服务的神经系统

在微服务架构中,服务之间不再是固定连接,而是高度动态、短暂存在的。如何让每个服务准确找到彼此,是分布式系统治理的核心问题之一。服务注册发现机制,正如神经系统之于人体,承担着连接、协调、感知变化的关键角色。 本文将围绕 Netflix 开源的服务注册发现组件 Eureka 展…

基于Docker Compose部署Traccar容器与主机MySQL的完整指南

Traccar Docker镜像内嵌了H2数据库&#xff0c;该数据库容量有限&#xff0c;当达到一定容量时&#xff0c;定位数据无法写入会导致无法定位显示。为此有必要为Traccar 配置外部数据库。根据官网文档和自身经验我选择了MySQL。 参考的官方文档 软件环境为ubuntu server 24.04版…