Java中的字符型文件流FileReader和FileWriter详细解读

 更新时间:2023年10月16日 10:03:01   作者:发光吖  
这篇文章主要介绍了Java中的字符型文件流FileReader和FileWriter详细解读,与字节型文件流不同,字节型文件流读取和写入的都是一个又一个的字节,而字符型文件流操作的单位是一个又一个的字符,字符型流认为一个字母是一个字符,而一个汉字也是一个字符,需要的朋友可以参考下

字符型文件流

与字节型文件流不同,字节型文件流读取和写入的都是一个又一个的字节。

而字符型文件流操作的单位是一个又一个的字符,字符型流认为一个字母是一个字符,而一个汉字也是一个字符。

字符型文件流一般只能够用来操作一些文本格式的文件,即可以用记事本正常打开的文件。 (如:.txt .java .c .properties .html .js .xml)

字符型文件流解决了使用字节型文件流读写纯文本文件时可能发生的中文乱码问题,所以读写纯文本文件是字符型文件流的强项。

它的用法与字节型文件流(FileInputStream,FileOutputStream)基本一致,只不过它每次读写的数组类型是char[]而不是byte[]。

我们说所有带Reader字眼的都是字符型流。

而同时带Stream和Reader字眼的它们是字节字符转换流。

FileReader

继承关系:

在这里插入图片描述

常用构造方法:

  • FileReader(File file)
  • FileReader(String fileName)

常用方法:

在这里插入图片描述

常用的4个

  • read(char[] chars)
  • read(char[] cbuf,int off,int len)
  • skip(long n)
  • close()

简单尝试: 准备一个.txt文件:

在这里插入图片描述

读取它:

    public static void main(String[] args) {
        File file = new File("F:\\test\\Test.txt");
        FileReader fr = null;
        try {
            fr = new FileReader(file);
            char[] chars = new char[10];//每次读取5个字符
            int count = fr.read(chars);
            
            while (count!=-1){
                String s = new String(chars, 0, count);
                System.out.println(s);
                count = fr.read(chars);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fr!=null){
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

执行结果:

在这里插入图片描述

换行是我打印的时候加上去的(每读取10个字符打印一次)。

FileWriter

继承关系:

在这里插入图片描述

常用构造方法:

  • FileWriter(File file)
  • FileWriter(File file, boolean append)
  • FileWriter(String fileName)
  • FileWriter(String fileName, boolean append)

常用方法:

在这里插入图片描述

常用的6个

  • write(char[] cbuf)
  • write(String str)
  • write(String str,int off,int len)
  • write(String cbuf,int off,int len)
  • close()
  • flush()

简单尝试:

    public static void main(String[] args) {
        File file = new File("F:\\test\\log.txt");
        //log.txt可以不存在,test文件夹必须存在

        FileWriter fw = null;
        try {
            fw = new FileWriter(file,true);//要追加写入数据
            String str = "文字是人类用表义符号记录表达信息,使之传之久远的方式和工具。现代文字大多是记录语言的工具。人类往往先有口头的语言后产生书面文字,很多方言和小语种,有语言但没有文字。文字的不同体现了国家和民族的书面表达的方式和思维不同。文字使人类进入有历史记录的文明社会。\n" +
                    "Text is a way and tool for human beings to record and express information by means of symbolic meaning.Modern writing is mostly a tool for recording language.Humans tend to have spoken languages before they have written languages, many dialects and smaller languages that have languages but no words.The different characters reflect the different ways and thinking of the written expression of the country and nation.Writing enabled mankind to enter a civilization with a historical record.";
            char[] chars = str.toCharArray();
            fw.write(chars);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fw!=null){
                try {
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

执行结果:

在这里插入图片描述

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

相关文章

  • 使用Springboot自定义注解,支持SPEL表达式

    使用Springboot自定义注解,支持SPEL表达式

    这篇文章主要介绍了使用Springboot自定义注解,支持SPEL表达式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • SpringBoot源码 PropertySource解析

    SpringBoot源码 PropertySource解析

    PropertySource是spring中对于键值属性的一种抽象,主要是name和sourcePropertyResolver是对PropertySource提供对外的统一数据处理,对于占位符的处理委托于PropertyPlaceholderHelper,对Springboot 源码 PropertySource相关知识感兴趣的朋友一起看看吧
    2023-01-01
  • java构造器 默认构造方法及参数化构造方法

    java构造器 默认构造方法及参数化构造方法

    构造器也叫构造方法、构造函数,是一种特殊类型的方法,负责类中成员变量(域)的初始化。构造器的用处是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化,下面文章将进入讲解,需要的朋友可以参考下
    2021-10-10
  • Springboot整合JwtHelper实现非对称加密

    Springboot整合JwtHelper实现非对称加密

    本文主要介绍了Springboot整合JwtHelper实现非对称加密,主要介绍两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • 聊聊Java和CPU的关系

    聊聊Java和CPU的关系

    java和cpu关系不大,但是也有点关系,下面我们来聊一聊java和cpu的关系,感兴趣的朋友一起看看吧
    2016-08-08
  • JAVA正则表达式的基本使用教程

    JAVA正则表达式的基本使用教程

    这篇文章主要给大家介绍了关于JAVA正则表达式的基本使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java SpringBoot模板引擎之 Thymeleaf入门详解

    Java SpringBoot模板引擎之 Thymeleaf入门详解

    jsp有着强大的功能,能查出一些数据转发到JSP页面以后,我们可以用jsp轻松实现数据的显示及交互等,包括能写Java代码。但是,SpringBoot首先是以jar的方式,不是war;其次我们的tomcat是嵌入式的,所以现在默认不支持jsp
    2021-10-10
  • Java动态代理分析及简单实例

    Java动态代理分析及简单实例

    这篇文章主要介绍了 Java动态代理分析及简单实例的相关资料,需要的朋友可以参考下
    2017-02-02
  • Mybatis的Mapper代理对象生成及调用过程示例详解

    Mybatis的Mapper代理对象生成及调用过程示例详解

    这篇文章主要为大家介绍了Mybatis的Mapper代理对象生成及调用过程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Java IO流之字节输入流的使用详解

    Java IO流之字节输入流的使用详解

    这篇文章主要为大家详细介绍了Java IO流中字节输入流的使用,文中的示例代码讲解详细,对我们学习Java有一定的帮助,需要的可以参考一下
    2022-08-08

最新评论