新数据结构(13)——I/O

news/2025/2/23 0:28:30

字符流

字符输入流(Reader)

字符输入流用于从数据源(如文件、字符串等)读取字符数据。Reader 是所有字符输入流的抽象基类。

常用实现类

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

InputStreamReader 将字节流转换为字符流,可以指定字符编码。

BufferedReader 提供缓冲功能,提高读取效率,支持按行读取。

读取input.txt里的字符:

写入的五种方式:

字节流

字节输入流(InputStream)

InputStream 是所有字节输入流的抽象基类,它定义了读取字节数据的基本方法。常见的字节输入流子类有 FileInputStream、ByteArrayInputStream 等。

常用方法

  • int read():从输入流中读取一个字节的数据,返回值为读取的字节(范围是 0 - 255),如果到达流的末尾则返回 -1。
  • int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中,返回实际读取的字节数,如果到达流的末尾则返回 -1。
  • int read(byte[] b, int off, int len):从输入流中读取最多 len 个字节的数据,并将其存储在数组 b 中,从偏移量 off 开始存储,返回实际读取的字节数,如果到达流的末尾则返回 -1。
  • void close():关闭此输入流并释放与之关联的所有系统资源。

用字节流实现复制:

package Test20250220_IO; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.FileOutputStream; import java.io.IOException; public class ByteStreamCopyExample { public static void main(String[] args) { // TODO Auto-generated method stub try { FileInputStream fis = new FileInputStream("C:\\Users\\ZhuanZ\\workspace\\newDataStructure\\src\\Test20250220_IO\\input.txt"); InputStreamReader isr = new InputStreamReader(fis,"UTF-8"); // 读取单个字节 int dataI; String dataO =""; while((dataI=isr.read())!=-1){ dataO+=((char)dataI)+""; } FileOutputStream fos= new FileOutputStream("C:\\Users\\ZhuanZ\\workspace\\newDataStructure\\src\\Test20250220_IO\\output.txt"); byte[] bytes = dataO.getBytes(); // 写入字节数组 fos.write(bytes); } catch(IOException e){ e.printStackTrace(); } } }


http://www.niftyadmin.cn/n/5862872.html

相关文章

【深度学习】Pytorch项目实战-基于协同过滤实现物品推荐系统

一、推荐系统的了解 1. 定义 推荐系统是一个信息过滤系统,旨在为用户提供个性化的内容推荐。它利用用户的历史行为、偏好以及其他相关数据来推测用户可能感兴趣的项目或信息。推荐系统广泛应用于电子商务、社交媒体、流媒体服务等领域,帮助用户发现商品…

linux下查看当前用户、所有用户的方法

一、查看当前用户 1、shell终端中输入:who当前用户为:book,使用tty7的终端,后面是登陆的时间 2、shell终端中输入:whoami当前用户为:book,很精简输出结果 3、shell终端中输入:w当…

【C#】无法安装程序包“DotSpatial.Symbology 4.0.656”

C#代码:NaturalNeighbor nn new NaturalNeighbor(); 错误:无法安装程序包“DotSpatial.Symbology 4.0.656”。你正在尝试将此程序包安装到目标为“.NETFramework,Versionv4.7.2”的项目中,但该程序包不包含任何与该框架兼容的程序集引用或…

线程与进程的深入解析及 Linux 线程编程

在操作系统中,进程和线程是进行并发执行的两种基本单位。理解它们的区别和各自的特点,能够帮助开发者更好地进行多任务编程,提高程序的并发性能。本文将探讨进程和线程的基础概念,及其在 Linux 系统中的实现方式,并介绍…

Hutool - Extra:功能丰富的扩展模块

一、简介 Hutool - Extra 作为 Hutool 工具包的扩展模块,对众多第三方库和功能进行了封装,极大地丰富了 Hutool 的功能体系。它涵盖了模板引擎、邮件发送、Servlet 处理、二维码生成、Emoji 处理、FTP 操作以及分词等多个方面,为开发者在不同…

es6的Generator函数用法

目录 基本概念语法特性使用场景异步应用高级用法最佳实践 基本概念 什么是 Generator 函数? Generator 函数是 ES6 提供的一种异步编程解决方案,它可以让函数执行过程中被暂停和恢复。Generator 函数通过 function* 声明,内部使用 yield …

【练习】【回溯:组合:一个集合 元素可重复】力扣 39. 组合总和

题目 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重…

网页制作05-html,css,javascript初认识のhtml表格的创建

一、创建表格 1、表格的基本构成: Table, Tr,td 1)简介: 表格是由行列和单元格三部分组成的,一般通过三个标记来创建: Table,表格标记 Tr,行标记 td,单元格标记 2&#xff09…