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的字符型文件流内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析java移位符的具体使用

    浅析java移位符的具体使用

    这篇文章主要介绍了浅析java移位符的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 用Java实现小球碰壁反弹的简单实例(算法十分简单)

    用Java实现小球碰壁反弹的简单实例(算法十分简单)

    下面小编就为大家带来一篇用Java实现小球碰壁反弹的简单实例(算法十分简单)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 浅谈MyBatisPlus中LocalDateTime引发的一些问题和解决办法

    浅谈MyBatisPlus中LocalDateTime引发的一些问题和解决办法

    MyBatisPlus进行数据库操作时,我们经常会遇到处理日期时间类型的需求,本文主要介绍了浅谈MyBatisPlus中LocalDateTime引发的一些问题和解决办法,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • JavaSE基础之反射机制(反射Class)详解

    JavaSE基础之反射机制(反射Class)详解

    反射机制有什么用?通过java语言中的反射机制可以操作字节码文件,可以读和修改字节码文件。所以本文将为大家讲讲反射机制的使用,需要的可以参考一下
    2022-09-09
  • 解决Lombok注解不起作用的问题

    解决Lombok注解不起作用的问题

    这篇文章主要介绍了解决Lombok注解不起作用的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理方式

    SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理方式

    这篇文章主要介绍了SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Spring Boot搭建文件上传服务的方法

    Spring Boot搭建文件上传服务的方法

    这篇文章主要为大家详细介绍了Spring Boot搭建文件上传服务的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Java原生方法实现 AES 算法示例

    Java原生方法实现 AES 算法示例

    这篇文章主要介绍了Java原生方法实现 AES 算法,结合实例形式分析了Java实现AES加密算法的相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • Java使用正则表达式演示电话与邮箱格式

    Java使用正则表达式演示电话与邮箱格式

    本文详细讲解了Java正则表达式的用法,举例演示电话和邮箱格式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Java中小球碰撞并使用按钮控制数量实例代码

    Java中小球碰撞并使用按钮控制数量实例代码

    这篇文章主要给大家介绍了关于Java中小球碰撞并使用按钮控制数量的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-12-12

最新评论