java-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();
                }
            }
        }
    }
}

*/

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值