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

Java的IO流

Java 的 IO 流(输入/输出流)是 Java 提供的一组用于处理输入和输出的类和接口。Java 的 IO 流提供了一种抽象的、面向字节和字符的方式来处理数据的读写操作。Java IO 流主要分为两大类:字节流(Byte Streams)和字符流(Character Streams)。此外,还有一些针对文件、缓冲、数据和对象的流。

一、字节流(Byte Streams)

字节流用于处理 8 位字节的数据,可以处理所有类型的数据,包括图像、音频、视频等。字节流分为输入字节流和输出字节流。

  1. 输入字节流(InputStream)

    • InputStream 是所有输入字节流的抽象父类。

    • 常用子类包括:

      • FileInputStream: 从文件中读取数据。

      • ByteArrayInputStream: 从字节数组中读取数据。

      • BufferedInputStream: 提供缓冲功能,减少对底层设备的访问次数。

  2. 输出字节流(OutputStream)

    • OutputStream 是所有输出字节流的抽象父类。

    • 常用子类包括:

      • FileOutputStream: 向文件中写入数据。

      • ByteArrayOutputStream: 向字节数组中写入数据。

      • BufferedOutputStream: 提供缓冲功能,减少对底层设备的访问次数。

二、字符流(Character Streams)

字符流用于处理 16 位 Unicode 字符的数据,专门处理字符和字符串的数据,可以处理文本文件。字符流也分为输入字符流和输出字符流。

  1. 输入字符流(Reader)

    • Reader 是所有输入字符流的抽象父类。

    • 常用子类包括:

      • FileReader: 从文件中读取字符。

      • CharArrayReader: 从字符数组中读取字符。

      • BufferedReader: 提供缓冲功能,减少对底层设备的访问次数,同时提供了 readLine 方法来读取一整行文本。

  2. 输出字符流(Writer)

    • Writer 是所有输出字符流的抽象父类。

    • 常用子类包括:

      • FileWriter: 向文件中写入字符。

      • CharArrayWriter: 向字符数组中写入字符。

      • BufferedWriter: 提供缓冲功能,减少对底层设备的访问次数,同时提供了 newLine 方法来写入一个换行符。

三、其他常用的流
  1. 数据流(Data Streams)

    • DataInputStreamDataOutputStream:用于读写基本数据类型(如 int, float, double)和字符串。

  2. 对象流(Object Streams)

    • ObjectInputStreamObjectOutputStream:用于读写对象,序列化和反序列化对象。

  3. 打印流(Print Streams)

    • PrintStreamPrintWriter:提供便捷的方法来打印各种数据类型的值。

四、流的基本操作
  • 打开流: 创建流对象,如 FileInputStream fileInput = new FileInputStream("input.txt");

  • 读取/写入数据: 使用流的方法读取或写入数据,如 fileInput.read();

  • 关闭流: 使用 close 方法关闭流以释放资源,如 fileInput.close();

五、示例代码

下面是一个示例,展示如何使用字节流和字符流来读取和写入文件:

字节流示例

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class ByteStreamExample {public static void main(String[] args) {try {FileInputStream inputFile = new FileInputStream("input.txt");FileOutputStream outputFile = new FileOutputStream("output.txt");int data;while ((data = inputFile.read()) != -1) {outputFile.write(data);}inputFile.close();outputFile.close();} catch (IOException e) {e.printStackTrace();}}
}

字符流示例

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class CharacterStreamExample {public static void main(String[] args) {try {BufferedReader reader = new BufferedReader(new FileReader("input.txt"));BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));String line;while ((line = reader.readLine()) != null) {writer.write(line);writer.newLine();}reader.close();writer.close();} catch (IOException e) {e.printStackTrace();}}
}

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • VBA即用型代码手册:删除重复行Delete Duplicate Rows
  • 七天进阶elasticsearch[two]
  • 暴雨推出X705显示器:23.8英寸100Hz IPS屏
  • 重写setter方法要小心递归调用
  • [word] word悬挂缩进怎么设置? #经验分享#职场发展#经验分享
  • 25.逢七必过
  • Docker 学习总结(83)—— 配置文件daemon.json介绍及优化建议
  • python学习 - 在线 百度语音API 播报 测试案例分析
  • 二叉树最大宽度
  • 论文略读:Onthe Expressivity Role of LayerNorm in Transformers’ Attention
  • Spark MLlib机器学习
  • 安全高效海外仓系统:中小海外仓标准化管理的第一步
  • 开机自启动脚本配置
  • Java 期末复习 习题集
  • VS2022+Qt雕刻机单片机马达串口上位机控制系统
  • 30天自制操作系统-2
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Consul Config 使用Git做版本控制的实现
  • CSS实用技巧干货
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Mysql数据库的条件查询语句
  • python学习笔记 - ThreadLocal
  • ReactNativeweexDeviceOne对比
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • XML已死 ?
  • 分享几个不错的工具
  • 机器学习 vs. 深度学习
  • 今年的LC3大会没了?
  • 聚类分析——Kmeans
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 删除表内多余的重复数据
  • 使用 @font-face
  • 我看到的前端
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 项目管理碎碎念系列之一:干系人管理
  • 延迟脚本的方式
  • 一个SAP顾问在美国的这些年
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • #### go map 底层结构 ####
  • #vue3 实现前端下载excel文件模板功能
  • (2)STL算法之元素计数
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Java数据结构)ArrayList
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (八)Flask之app.route装饰器函数的参数
  • (八十八)VFL语言初步 - 实现布局
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (四)软件性能测试
  • (五)IO流之ByteArrayInput/OutputStream
  • (转)负载均衡,回话保持,cookie
  • (自用)仿写程序
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008