Java 中 IO 流

目录

前言

1. 字节流(Byte Streams):

1.1 输入字节流:

1.2 输出字节流:

2. 字符流(Character Streams):

2.1 输入字符流:

2.2 输出字符流:

3. 转换流(转换流用于连接字节流和字符流):

4. 对象流:

我的其他博客


前言

在Java中,I/O(输入/输出)流是用于处理输入和输出操作的机制。Java的I/O流主要分为两大类:字节流(Byte Streams)和字符流(Character Streams)。每个类别又分为输入流和输出流。

1. 字节流(Byte Streams):

字节流以字节为单位进行读写操作,适用于处理二进制数据(如图像、音频等)。

1.1 输入字节流:
  • InputStream(输入流的抽象基类):
    • FileInputStream: 从文件读取字节。
      FileInputStream fis = new FileInputStream("example.txt");
      int data = fis.read();
      while (data != -1) {// 处理读取的字节数据System.out.print((char) data);data = fis.read();
      }
      fis.close();
      

    • ByteArrayInputStream: 从字节数组读取字节。
      byte[] byteArray = {65, 66, 67, 68, 69}; // ASCII values for A, B, C, D, E
      ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
      int data = bais.read();
      while (data != -1) {// 处理读取的字节数据System.out.print((char) data);data = bais.read();
      }
      bais.close();
      

    • BufferedInputStream: 提供缓冲功能,提高读取效率。
      FileInputStream fis = new FileInputStream("example.txt");
      BufferedInputStream bis = new BufferedInputStream(fis);
      int data = bis.read();
      while (data != -1) {// 处理读取的字节数据System.out.print((char) data);data = bis.read();
      }
      bis.close();
      

1.2 输出字节流:
  • OutputStream(输出流的抽象基类):
    • FileOutputStream: 向文件写入字节。
      FileOutputStream fos = new FileOutputStream("output.txt");
      fos.write("Hello, World!".getBytes());
      fos.close();
      

    • ByteArrayOutputStream: 将字节写入到字节数组。
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      baos.write("Hello, World!".getBytes());
      byte[] result = baos.toByteArray();
      baos.close();
      

    • BufferedOutputStream: 提供缓冲功能,提高写入效率。
      FileOutputStream fos = new FileOutputStream("output.txt");
      BufferedOutputStream bos = new BufferedOutputStream(fos);
      bos.write("Hello, World!".getBytes());
      bos.close();
      

2. 字符流(Character Streams):

字符流以字符为单位进行读写操作,适用于处理文本数据。

2.1 输入字符流:
  • Reader(输入流的抽象基类):
    • FileReader: 从文件读取字符。
      FileReader fr = new FileReader("example.txt");
      int data = fr.read();
      while (data != -1) {// 处理读取的字符数据System.out.print((char) data);data = fr.read();
      }
      fr.close();
      

    • CharArrayReader: 从字符数组读取字符。
      char[] charArray = {'A', 'B', 'C', 'D', 'E'};
      CharArrayReader car = new CharArrayReader(charArray);
      int data = car.read();
      while (data != -1) {// 处理读取的字符数据System.out.print((char) data);data = car.read();
      }
      car.close();
      

    • BufferedReader: 提供缓冲功能,提高读取效率。
      FileReader fr = new FileReader("example.txt");
      BufferedReader br = new BufferedReader(fr);
      String line = br.readLine();
      while (line != null) {// 处理读取的一行字符数据System.out.println(line);line = br.readLine();
      }
      br.close();
      

2.2 输出字符流:
  • Writer(输出流的抽象基类):
    • FileWriter: 向文件写入字符。
      FileWriter fw = new FileWriter("output.txt");
      fw.write("Hello, World!");
      fw.close();
      

    • CharArrayWriter: 将字符写入到字符数组。
      CharArrayWriter caw = new CharArrayWriter();
      caw.write("Hello, World!");
      char[] result = caw.toCharArray();
      caw.close();
      

    • BufferedWriter: 提供缓冲功能,提高写入效率。
      FileWriter fw = new FileWriter("output.txt");
      BufferedWriter bw = new BufferedWriter(fw);
      bw.write("Hello, World!");
      bw.close();
      

3. 转换流(转换流用于连接字节流和字符流):

  • InputStreamReader: 将字节输入流转换为字符输入流。
    FileInputStream fis = new FileInputStream("example.txt");
    InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
    BufferedReader br = new BufferedReader(isr);
    // 通过 BufferedReader 读取字符数据
    br.close();
    

  • OutputStreamWriter: 将字节输出流转换为字符输出流。
    FileOutputStream fos = new FileOutputStream("output.txt");
    OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
    BufferedWriter bw = new BufferedWriter(osw);
    // 通过 BufferedWriter 写入字符数据
    bw.close();
    

4. 对象流:

  • ObjectInputStream: 用于读取对象的输入流。
    FileOutputStream fos = new FileOutputStream("object.dat");
    ObjectOutputStream oos = new ObjectOutputStream(fos);MyClass obj = new MyClass(); // MyClass需要实现Serializable接口
    oos.writeObject(obj);oos.close();
    

  • ObjectOutputStream: 用于写入对象的输出流。
    FileInputStream fis = new FileInputStream("object.dat");
    ObjectInputStream ois = new ObjectInputStream(fis);MyClass obj = (MyClass) ois.readObject(); // 强制类型转换为实际的对象类型ois.close();
    

我的其他博客

Git命令大全:从基础到高级应用-CSDN博客

简单介绍一些其他的树-CSDN博客

什么是tomcat?tomcat是干什么用的?-CSDN博客

TCP/IP 四层体系结构-CSDN博客

Redis新数据类型-Bitmaps-CSDN博客

腾讯-轻量应用服务器centos7中宝塔安装MySQL8.0出现内存不足-CSDN博客Synchronized 优化-CSDN博客腾讯-轻量应用服务器centos7中宝塔安装MySQL8.0出现内存不足-CSDN博客

【计算机网络】URL概念及组成-CSDN博客

【计算机网络】TCP socket编程-CSDN博客

枚举类的final修饰-CSDN博客

什么是RabbitMQ-CSDN博客

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

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

相关文章

java实现局域网内视频投屏播放(二)爬虫

代码链接 视频播放原理 大多视频网站使用的是m3u8,m3u8其实不是一个真正的视频文件,而是一个视频播放列表(playlist)。它是一种文本文件,里面记录了一系列的视频片段(segment)的网络地址。这些…

FLStudio20最新2024年中文汉化版

FLStudio21.0.2.3中文版完整下载是最好的音乐开发和制作软件也称为水果循环。它是最受欢迎的工作室,因为它包含了一个主要的听觉工作场所。最新FL有不同的功能,如它包含图形和音乐音序器,帮助您使完美的配乐在一个美妙的方式。此程序可用于Mi…

深入理解人工智能中的图神经网络:原理、应用与未来展望

导言: 图神经网络(Graph Neural Networks, GNNs)作为人工智能领域的一项前沿技术,在社交网络分析、推荐系统、生物信息学等多个领域展现出卓越的性能。本文将深入剖析图神经网络的原理、当前应用场景以及未来可能的发展方向。 1.…

PDI/Kettle-9.2.0.0-R(对应jdk1.8)源码编译问题记录及源码结构简介

目录 📚第一章 前言📗背景📗目的📗总体方向 📚第二章 代码结构初识基本结构📗代码模块详情 ⁉️问题记录❓问题一:代码分支哪些是发布版本❗答:后缀-R的版本 ❓问题二:50…

ISSUE的基本概念

ISSUE:将符合一定条件的指令从发射队列(IssueQueue)中选出来,并送到FU中执行的过程; ISSUE QUEUE也称之为reservation station, 其按照一定的规则,选择那些源操作数都已经准备好的指令,将其送到FU中执行,这个过程称为…

基于ssm旅游景点管理系统设计论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本旅游景点管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

拷贝的艺术:深拷贝与浅拷贝的区别与应用(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

基于ssm培训学校教学管理平台论文

摘 要 社会的进步,教育行业发展迅速,人们对教育越来越重视,在当今网络普及的情况下,教学管理模式也开始逐渐网络化,学校开始网络教学管理模式。 本文研究的培训学校教学管理平台基于SSM框架,采用Java技术和…

【unity小技巧】unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡,复制粘贴即可

最终效果 文章目录 最终效果前言为什么使用CharacterControllerSimpleMove和Move如何选择?1. SimpleMove2. Move 配置CharacterController参数控制相机移动跳跃下蹲处理下坡抖动问题实现奔跑和不同移速控制完整代码完结 前言 其实一开始我是不打算写的,…

MyBatis执行Sql的流程分析

本文介绍MyBatis执行Sql的流程,关于在执行过程中缓存、动态SQl生成等细节不在本章中体现 还是以之前的查询作为列子: public class MyApp {public static void main(String[] args) {String resource "mybatis-config.xml";Reader reader;t…

【Spring Boot】快速入门

一、引言 1、什么是spring boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式&#xff…

如何在Centos 7环境下安装MySQL并登录

目录 先获取MySQL官方yum源 然后正常使用yum命令下载mysql即可完成MySQL的下载 使用mysql客户端登录mysqld服务端 能够登录mysql客户端后,我们最后还需要做一点配置 先获取MySQL官方yum源(包括对yum源的介绍) 介绍一下yum源 yum源就是一…