Java IO流之字符流的使用详解

 更新时间:2022年08月25日 09:37:15   作者:糊涂涂是个小盆友  
这篇文章主要围绕Java中的字符流进行介绍,包括字符输入流、字符输出流以及处理流异常的几种方式。文中的示例代码讲解详细,感兴趣的可以了解一下

一、字符流的出现

中文在GBK中占有两个字节,在utf-8中占有三个字节(即需要三个字节才能组成一个中文字),字节流读取中文时由于编码集的不同,字节流读取中文也比较麻烦,从而出现了字符流

字符流也在java.io包下

二、字符输入流Reader

①、是一个接口类

②、里面提供了一些共性的方法,供子类使用

方法描述
int read()读取单个字符并返回
int read(char[] c)一次性读取多个字符,将数据放入数组
void close()释放资源

三、文件字符输入流 FileReader

①、FileReader extends InputStreamReader extends Reader

②、构造方法

FileReader(String filename)

FileReader(File file)

参数:读取文件的数据源

作用:创建FileReader对象、把FileReader对象指向要读取的文件

③、步骤

1、创建FileReader对象并绑定数据源

2、使用对象的read方法读取数据

3、释放资源

④、代码编程(读取单个字符)

import java.io.FileReader;
import java.io.IOException;

public class ReaderTest {
    public static void main(String[] args) {
        try {
            // 1、创建FileReader对象
            FileReader fr = new FileReader("E:\\JavaCode\\JavaSE\\Day8-24\\src\\a.txt");
            // 2、调用read方法
            int len = 0;
            while ((len = fr.read())!=-1){
                System.out.println((char)len);
            }
            // 3、释放资源
            fr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

⑤、代码编程(一次性读取多个字符)

try {
            // 1、创建FileReader对象
            FileReader fr = new FileReader("E:\\JavaCode\\JavaSE\\Day8-24\\src\\a.txt");
            // 2、调用read方法
            char[] c = new char[1024];
            int len = 0;
            while ((len = fr.read(c))!=-1){
                System.out.println(new String(c,0,len));
            }
            // 3、释放资源
            fr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

四、字符输出流 Writer

共性的成员方法

方法介绍
void write(int c)写入单个字符
void write(char[] c)写入字符数组
abstract void write(char[] c,int off,int len)写入字符数组的某一部分,off为数组的开始索引,len为写入的字符个数
void write(String str)写入字符串
void write(String str,int off,int len)写入字符串的某一部分,off为字符开始索引,len为写的字符个数
void flush()刷新该流的缓冲
void close()释放资源

五、文件字符输出流 FileWriter

①、FileWriter extends OutputStreamWriter extends Writer

②、构造方法

方法介绍
FileWriter (File file)根据给定的file对象构造一个FileWriter对象
FileWriter (String filename)根据给定 的文件名构造一个FileWriter对象

参数:写入数据的目的地

③、使用步骤

1、创建FileWriter对象,构造方法中绑定要写入数据的目的地

2、使用FileWriter中的方法write,把数据写入到内存缓冲区中(字符转换为字节的过程)

3、使用FileWriter中的方法flush,把内存缓冲区中的数据刷新到文件中(必须有这一步)

4、释放资源

④、代码描述

import java.io.FileWriter;
import java.io.IOException;

public class WriterTest {
    public static void main(String[] args) {
        try {
            // 1、创建对象
            FileWriter fw = new FileWriter("E:\\JavaCode\\JavaSE\\Day8-24\\src\\a.txt",true);
            // 2、写入数据
            fw.write("好么");
            // 3、刷新
            fw.flush();
            // 4、释放资源
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

六、close()和flush()的区别

close()释放资源后不能够再使用流进行相关的操作

flush()刷新后还能够再操作

七、换行和续写

与字节流中的换行和续写一致

续写:

在使用构造函数的时候传入两个参数,第一个参数是文件的路径,第二个参数是是否续写(为true表示续写false则表示不续写直接覆盖)

换行:

在Windows系统中换行符号为 \r\n

在linux系统中换行符号为 /n

在Mac系统中换行符号为 /r

八、使用try-catch-finally处理流异常

try{
    可能会产出异常的代码
}catch(异常类变量 变量名){
    异常的处理逻辑
}finally{
    一定会执行的代码
    资源释放
}

今天只进行简单的介绍,后续会专门出一期jdk7和jdk9中处理流异常的对比

到此这篇关于Java IO流之字符流的使用详解的文章就介绍到这了,更多相关Java字符流内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis的association传递参数问题示例

    mybatis的association传递参数问题示例

    这篇文章主要介绍了mybatis的association传递参数问题,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • java学习之junit单元测试案例(经典版)

    java学习之junit单元测试案例(经典版)

    这篇文章主要介绍了java学习之junit单元测试的相关资料,文中讲解了JUnit单元测试的基本概念、作用、使用assert进行验证、覆盖率分析、BeforeEach和AfterAll的使用、通过反射和注解实现测试,需要的朋友可以参考下
    2024-12-12
  • 解决idea 中 SpringBoot 点击运行没反应按钮成灰色的问题

    解决idea 中 SpringBoot 点击运行没反应按钮成灰色的问题

    在使用 Spring Boot 开发项目时,可能会遇到一个问题:点击运行按钮后,控制台没有任何输出,项目界面也没有显示,这种情况可能是由多种原因导致的,本文将介绍一些常见的解决方法,需要的朋友可以参考下
    2023-08-08
  • Spring oxm入门实例

    Spring oxm入门实例

    这篇文章主要介绍了Spring oxm入门实例,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • java list常用方法总结

    java list常用方法总结

    这篇文章主要介绍了java list常用方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • spring中的懒加载详细解读

    spring中的懒加载详细解读

    这篇文章主要介绍了spring中的懒加载详细解读,如果某个Bean再程序运行周期中都可能不会被适用,那么可以设定该Bean为懒加载,优势是尽量节省了服务器的资源,缺点是可能会导致某个相应的时间增加,需要的朋友可以参考下
    2023-10-10
  • Java 中 hashCode() 与 equals() 的关系(面试)

    Java 中 hashCode() 与 equals() 的关系(面试)

    这篇文章主要介绍了Java中hashCode()与equals()的关系,ava中hashCode()和equals()的关系是面试中的常考点,文章对hashCode与equals的关系做出详解,需要的小伙伴可以参考一下
    2022-09-09
  • Java基础 Servlet监听器详解

    Java基础 Servlet监听器详解

    这篇文章主要介绍了Java基础 Servlet监听器详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • Java Grpc实例创建负载均衡详解

    Java Grpc实例创建负载均衡详解

    这篇文章主要介绍了Java Grpc实例创建负载均衡详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 在Spring环境中正确关闭线程池的姿势

    在Spring环境中正确关闭线程池的姿势

    这篇文章主要介绍了在Spring环境中正确关闭线程池的姿势,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论