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

devtools/2025/2/26 1:34:00/

字符流

字符输入流(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.ppmy.cn/devtools/162692.html

相关文章

ubuntu docker 安装 deepseek anythingllm/openwebui教程

全新服务器安装起始: 1. 安装ubuntu到服务器中 2. 安装docker 安装教程 ubuntu 安装 docker详细教程_ubuntu安装教程docker-CSDN博客 3. 安装 ollama docker pull ollama/ollama 3.1 创建 存储目录 (示例放在/home/ollama中) cd /home/ …

第2章 深入理解Thread构造函数

Thread的构造函数。 2.1 线程的命名 在构造一个Thread时可以为其命名。 2.1.1 线程的默认命名 下面构造函数中,并没有为线程命名。 Thread() Thread(Runnable target) Thread(ThreadGroup group, Runnable target)打开源码会看到 public Thread(Runnable targe…

【NLP算法面经】腾讯、头条算法岗详细面经(★附面题整理★)

【NLP算法面经】腾讯、头条算法岗详细面经(★附面题整理★) 🌟 嗨,你好,我是 青松 ! 🌈 自小刺头深草里,而今渐觉出蓬蒿。 NLP Github 项目推荐: 【AI 藏经阁】&#xf…

Lecture 2 - Python

一、Python的执行方式 1. Executable file(可执行文件):生成可以直接运行的程序。(经过编译的程序) 2. Interpreter(解释器):Python 使用解释器逐行执行代码,而不是通过…

Element UI中messageBox怎么区分点击取消按钮关闭弹窗,和点击右上角x号以及点击遮罩层关闭按钮

在某些场景下,我们可能需要区分点击取消按钮关闭 messageBox 和点击X号、遮罩层关闭 messageBox 。 实现: 将 distinguishCancelAndClose 设置为 true,这个属性的意思是:是否将取消(点击取消按钮)与关闭&…

python和pycharm 和Anaconda的关系

好的,下面我会详细说明 Python、PyCharm 和 Anaconda 三者的关系,并逐一解释它们的功能和作用。 1. Python(编程语言) 定义:Python 是一种高级编程语言,设计简洁,易于学习,且功能强…

FPGA中利用fifo时钟域转换---慢时钟域转快时钟域

FPGA中利用fifo时钟域转换—慢时钟域转快时钟域 一、时间计算方法 FIFO的输入数据的时钟是40MHz,FIFO输出数据取60MHz,刚好是40MHz的1.5倍,将慢时钟域转快时钟域。另外,fifo输出的数据,要输出给上位机,一…

postgresql链接详解

PostgreSQL连接概述 连接基础 在探讨PostgreSQL连接的基础之前,我们需要理解什么是数据库连接。 数据库连接 是客户端应用程序与数据库服务器之间建立的一种通信通道,使用户能够访问和操作数据库中的数据。 PostgreSQL连接涉及以下几个关键要素&#…