java中的FileReader和FileWriter读写流

 更新时间:2023年10月16日 09:40:29   作者:Rnr_..  
这篇文章主要介绍了java中的FileReader和FileWriter读写流,在java中对数据输入输出的操作陈作为流我们对不同的文件进行操作,或者对操作文件进行输入和输出时所用的流都是不同的,因此在java.io的包下存在很多流的类或者接口提供给我们对应的操作,需要的朋友可以参考下

FileReader和FileWriter读写流

在java中对数据输入输出的操作陈作为流 我们对不同的文件进行操作,或者对操作文件进行输入和输出时所用的流都是不同的。

因此在java.io的包下存在很多流的类或者接口提供给我们对应的操作

流的原理:

  • 输入流(input):将外部的文件通过流读取到内存中
  • 输出流(output):将内存中的文件通过流输出到硬盘等储存设备中

分类:

  • 按照操作单位分为;字节流,字符流
  • 按照流向不同分为;输入流,输出流
  • 按照角色不同分为;节点流,处理流

io流体系:

  • FileReader与FileWriter
  • FileReader是针对字符型文件(后缀.txt)的流,根据定义的不同也可以称其为字符流,节点流,输入流
  • FileWriter是针对是针对字符型文件(后缀.txt)的流,根据定义的不同也可以称其为字符流,节点流,输出流

FileReader的使用

1,实例化一个File类用与操作的对象

2,实例化一个FileReader类并且将file对象作为参数传入它的构造器中。

3,用FileReader的方法将数据读入 FileReader读入数据的方法是read()方法 —>read()的空参构造器:返回读入的一个字符并继续往下读如果读到最后一个元素返回-1 —>read(char cbuf[])一次读入cbuf中字符个元素的个数如果到达文件末尾返回-1

4,关闭流 close();方法流不会自动关闭,必须手动关闭,不然会浪费资源

public class FileReaderAndFileWriter {
    public static void main(String[] args) {
        FileReader flr = null;
        try {
            File file = new File("hello.txt");
            flr = new FileReader(file);
            char[] cbuf = new char[2];
            int read = flr.read(cbuf);
            while (read != -1){
                for (int i = 0 ; i < read ; i++){
                    System.out.print(cbuf[i]);
                }
                read = flr.read(cbuf);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(flr != null){//防止空指针
                try {
                    flr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

注:整个过程中文件会报错,而我们需要使用try-catch-finally来解决该异常,如果使用throws的话中途抛出异常之后不会去执行最后的close();方法 则该流不会关闭会浪费资源

FileWriter的使用:FileWriter其实使用步骤和FileReader是一样的

1,实例化一个File类

2,实例化一个FileWriter类并且将File的实例作为参数传入FileWriter的构造器中 —> new FileWriter(file,flase);默认情况是flase; 修改原有文件的内容改为添加的数据 —>new FileWriter(file,true); 在原有文件的基础上添加写入的数据

3,使用write方法写入数据到指定文件夹中 如果实例化的File类的file文件不存在会自动添加 public void write(char cbuf[]) :一次写入cbuf指定个数的数据 public void write(char cbuf[], int off, int len):在传入的cbuf数组中从off开始写入,一次写入len个数据

4,关闭FileWriter流:colse();方法

例’

public class FileReaderAndFileWriter {
    public static void main(String[] args) {

        FileWriter flw = null;
        try {
        //写入的文件的文件夹名字
            File file = new File("hw.txt");
            flw = new FileWriter(file);
		//写入的内容
            flw.write("hello JAVA");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                flw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

利用FileReader和FileWriter实现对文本文件的复制

public class FileReaderAndFileWriter {
    public static void main(String[] args){
        FileReader flr = null;
        FileWriter flw = null;
        try {
        //file是需要复制的文件,file1是要复制到的地方
            File file = new File("hello.txt");
            File file1 = new File("hw.txt");
            flr = new FileReader(file);
            flw = new FileWriter(file1);

            char[] cbuf = new char[5];
            int read = flr.read(cbuf);
            while (read != -1){
//                for(int i = 0; i < cbuf.length; i++){
//                    flw.write(cbuf, 0 , read);
//                }
                //如果要用write方法直接写入的话需要使用下面三个参数的方法
                //否则会打印重复flw.write(cbuf);hello worldworl
                flw.write(cbuf, 0 , read);
                read = flr.read(cbuf);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(flr != null){
                try {
                    flr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            if(flw != null){
                try {
                    flw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

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

相关文章

  • Spring ApplicationContext接口功能详细介绍

    Spring ApplicationContext接口功能详细介绍

    ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等
    2023-02-02
  • Java中Calendar类的一些常用方法小结

    Java中Calendar类的一些常用方法小结

    项目当中,我们经常会涉及到对时间的处理,Date类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但更推荐使用 Calendar 类进行时间和日期的处理,这篇文章主要给大家介绍了关于Java中Calendar类的一些常用方法,需要的朋友可以参考下
    2021-11-11
  • SpringCloud连接不上远程Nacos问题排查

    SpringCloud连接不上远程Nacos问题排查

    本文主要介绍了SpringCloud连接不上远程Nacos问题排查,可能是因为未开放端口,或集群内部通信异常等,下面就来介绍一下问题解决,感兴趣的可以了解一下
    2024-06-06
  • idea更换jdk版本的完整步骤(附详细图文)

    idea更换jdk版本的完整步骤(附详细图文)

    idea很多地方都设置了jdk版本,不同模块的jdk版本也可能不一样,这篇文章主要介绍了idea更换jdk版本的完整步骤,通过文中介绍的步骤可以成功更换jdk版本,需要的朋友可以参考下
    2025-04-04
  • 深入理解Java三大特性中的多态

    深入理解Java三大特性中的多态

    多态性是对象多种表现形式的体现。在面向对象中,最常见的多态发生在使用父类的引用来引用子类的对象。下面这篇文章主要给大家深入的介绍了Java三大特性中多态的相关资料,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • SSM框架把日志信息保存到数据库过程详解

    SSM框架把日志信息保存到数据库过程详解

    这篇文章主要介绍了SSM框架把日志信息保存到数据库过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 解决SpringBoot内嵌Tomcat并发容量的问题

    解决SpringBoot内嵌Tomcat并发容量的问题

    这篇文章主要介绍了解决SpringBoot内嵌Tomcat并发容量的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java Autowired注解深入分析

    Java Autowired注解深入分析

    @Autowired注解是Spring中非常重要且常见的,接下来就简要的介绍一下它的用法。@Autowired默认是通过set方法,按照类型自动装配JavaBean,set方法可省略不写,它主要是修饰在成员变量上
    2023-01-01
  • Java如何判断一个url是否有效

    Java如何判断一个url是否有效

    URL类提供了一个openConnection()方法,可以打开一个连接并返回一个URLConnection对象,该对象可以用来检查连接是否有效,这篇文章主要介绍了Java判断一个url是否有效,需要的朋友可以参考下
    2023-09-09
  • SpringBoot集成ip2region实现ip白名单的代码示例

    SpringBoot集成ip2region实现ip白名单的代码示例

    ip2region v2.0 - 是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现,本文介绍了SpringBoot集成ip2region实现ip白名单的代码工程,需要的朋友可以参考下
    2024-08-08

最新评论