首页 > 编程语言 >Java 基础IO 输入输出流3

Java 基础IO 输入输出流3

时间:2024-03-22 17:22:04浏览次数:32  
标签:字符 Java 读取 FileReader 输入输出 写入 IO 数据 字节

1.了解IO

一个输入流用于从源读取数据。并且,输出流用于将数据写入目标。

System.out是一种输出流。--向显示器控制台输出-

2.InputStream 输入

Java InputStream子类是FileInputStream,ByteArrayInputStream和ObjectInputStream。

文件读取 -字节读取-序列化读取

3.OutputStream 输出

Java OutputStream的子类是FileOutputStream,ByteArrayOutputStream和ObjectOutputStream。

OutputStream out = new FileOutputStream("output.txt");

            //将字符串转换为字节
            byte[] dataBytes = data.getBytes();

            //将数据写入输出流
            out.write(dataBytes);
            System.out.println("数据被写入文件。");

输出-字节输出 输入 -字节返回

4.Read

Reader是抽象类,因此它本身不起作用。但是,其子类可用于读取数据。

Java Reader的子类是BufferedReader,InputStreamReader,FileReader和StringReader。

这四个类在 Java 中都用于读取字符数据,但有一些区别和适用场景:

  1. BufferedReader
    

    • BufferedReader 是带有缓冲区的字符输入流,用于提供缓冲字符输入,可以一次读取一行字符数据。
    • 通常与其他字符输入流结合使用,如 FileReaderInputStreamReader,以提高读取效率。
java
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
String line = br.readLine(); // 读取一行字符数据
  1. InputStreamReader
    

    • InputStreamReader 是字节流到字符流的桥梁,将字节流转换为字符流。
    • 它接收一个字节输入流(如 FileInputStream)作为参数,并将其转换为字符输入流。
java
InputStreamReader isr = new InputStreamReader(new FileInputStream("file.txt"));
int data = isr.read(); // 读取单个字符数据
  1. FileReader
    

    • FileReader 是用来读取文件的字符输入流,继承自 InputStreamReader
    • 可以直接用于读取文件中的字符数据。
java
FileReader fr = new FileReader("file.txt");
int data = fr.read(); // 读取单个字符数据
  1. StringReader
    

    • StringReader 是一个字符输入流,从字符串中读取字符数据。
    • 主要用于读取内存中的字符串数据,而不是外部文件中的数据。
java
StringReader sr = new StringReader("Hello, World!");
int data = sr.read(); // 读取单个字符数据

总结:

  • BufferedReader 用于缓冲字符输入,通常与其他字符输入流结合使用;
  • InputStreamReader 是字节流到字符流的转换器;
  • FileReader 用于读取文件中的字符数据;
  • StringReader 用于读取内存中的字符串数据。

根据具体的需求和数据来源选择合适的类来读取字符数据。

  • ready() - 检查Reader是否准备好读取
  • read(char[] array) - 从流中读取字符并存储在指定的数组中
  • read(char[] array, int start, int length)- 从流中读取length相等的字符数,并从start开始存储在指定的数组中
  • mark() - 标记流中已读取数据的位置
  • reset() - 重置流。如果流已被标记,然后尝试进行标记,以重新定位。如果该流未被标注,然后尝试将其复位在适当的特定流的一些方法,例如通过将其重新定位到其起始点。
  • skip() -从流中丢弃指定数量的字符

5.Writer

Java Writer的子类是BufferedWriter,OutputStreamWriter,FileWriter和StringWriter。

Writer类提供了由其子类实现的不同方法。 以下是一些方法:

  • write(char[] array) - 将指定数组中的字符写入输出流
  • write(String data) - 将指定的字符串写入写入器
  • append(char c) - 将指定字符插入当前写入器
  • flush() - 强制将写入器中存在的所有数据写入相应的目的地
  • close() - 关闭写入器

6.FileReader

java.io包的FileReader类可用于从文件中读取数据(以字符为单位)

FileReader是InputStreamReader的子类,而InputStreamReader是Java Reader的子类。

7.FileWriter

FileWriter是OutputStreamWriter的子类,而OutputStreamWriter是Java Writer的子类。

总结

字符流和字节流区别

字符 读取文件内容-是从字节流到字符流的桥梁,它将字节流转换为字符流。

字节 读取图片 视频文件-主要用于读取二进制数据,比如图片、音频、视频等文件。

标签:字符,Java,读取,FileReader,输入输出,写入,IO,数据,字节
From: https://www.cnblogs.com/Agtw/p/18090116

相关文章

  • uniapp开发ios,scroll-view横向滚动失效,动态获取scroll-view内部子容器总宽度,然后添加
    这是老bug了,官方一直没有解决掉。已经摸索到完美解决方案,遇到这个问题的可以看下。本文以三级导航页面中的二级横向滚动导航为例,说明如何做到不同宽度子元素的横向滚动。bug定位:本来横向滚动只要子元素宽度大于scroll-view固定宽度就可以滚动的,但是IOSApp开发中子元素高度必须......
  • 2020-8-9-JAVA机考题
    二叉排序数及中序遍历实现,socket应用,日志模拟的实现试题一/***实现要求:*1、根据已有的代码片段,实现一个二叉排序树;*2、用中序遍历输出排序结果,结果形如:0,1,2,3,4,5,6,7,8,9,*3、注意编写代码注释*/publicclassBinaryTree{ publicstaticvoidmain(String[]a......
  • 2020-5-5-JAVAWEB
    测试、反射、注解、Mysql、JDBC、Tomcat、servlet、HTTP、EL表达式、JSTL、Filter过滤器、代理模式、监听器、Redis、Maven测试1黑白盒测试黑盒测试:不需要写代码,给输入值,看程序能否给出期望的输出值白盒测试:需要写代码,关注程序具体执行流程2测试步骤1)定义测试类包名:cn.itca......
  • java:欧拉公式e^ix==cosx+i*sinx 用Math类中的方法输出90°以内的欧拉函数数值,保留四位
    publicclassMain{//本题的要求:e^ix==cosx+i*sinxdoubleb,c;chari;publicstaticvoidmain(String[]args){for(doublej=0;j<90;j++){//用循环依次整出0-90度doublesum=0;//temp是e^ix;doublea=j;a=Math.toRadi......
  • JDBC Connection Configuration+JDBC Request
    使用场景针对数据库做性能测试获取数据库表内数据关联使用性能测试背景高并发访问:数据库系统在高并发访问情况下可能遇到性能瓶颈,如响应时间延长、连接耗尽等。通过压测可以评估数据库在高并发负载下的性能表现。复杂查询:某些复杂查询可能会对数据库性能造成影响,例如涉及......
  • VMware ESXi 8.0U1d macOS Unlocker & OEM BIOS 标准版和厂商定制版
    VMwareESXi8.0U1dmacOSUnlocker&OEMBIOS标准版和厂商定制版ESXi8.0U1标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Hitachi(日立)、Fujitsu(富士通)、NEC(日电)OEM定制版请访问原文链接:https://sysin.org/blog/vmware-esx......
  • JetBrains全家桶激活,分享 CLion 2024 激活的方案
    大家好,欢迎来到金榜探云手!CLion公司简介JetBrains是一家专注于开发工具的软件公司,总部位于捷克。他们以提供强大的集成开发环境(IDE)而闻名,如IntelliJIDEA、PyCharm、和WebStorm等。这些工具被广泛用于Java、Python、JavaScript等编程语言的开发,因其智能化和高效性而......
  • Java房屋出租项目实现
    项目概述这个房屋出租管理系统主要包含三个类:House类、HouseService类和HouseView类和Utility类。该项目采用了面向对象的设计思想,将房屋信息的表示、业务逻辑和用户界面分别封装在不同的类中,提高了代码的可维护性和扩展性。House类House类用于表示房屋信息,包含了房屋的编号......
  • Java - 冒泡排序
      //冒泡排序publicclassBubbleSort{ publicstaticvoidmain(String[]args){ //定义一个整型的数组 int[]array={64,34,25,12,22,11,90} bubbleSort(array); for(inti:array){ System.out.println(i+""); } } publicstaticvoidbubbl......
  • Java并发之CAS (Compare and Swap)(转载)
    CAS(CompareandSwap)比较并替换,CAS是实现乐观锁的一个重要操作。CAS是一个硬件指令,保证是原子操作。Java中通过UnSafe来实现。原子类:AtomicBoolean,AtomicInteger,AtomicLong等使用CAS实现。1.概述CAS的基本步骤:执行函数CAS(V,E,N),如果V值等于E值,则将V的值设为N。若......