FileReader与FileWriter

  FileReader与FileWriter分别继承Reader和Writer,以字符为单位广泛用于文件操作的节点流。FileReader类用于从文本文件读数据,每次读入一个字符或者一个字符数组;FileWriter类用于从文本文件写数据,每次写入一个字符,一个字符数组或者一个字符串。

  FileReader类常用的构造方法:

--- FileReader(File file),在给定从中读取数据的File的情况下创建一个新的FileReader。

--- FileReader(String fileName),在给定从中读取数据的文件名的情况下创建一个新的FileReader。

--- FileReader(FileDescriptor fd),在给定从中读取数据的FileDescriptor 的情况下创建一个新的FileReader。

FileWriter类常用的构造方法:

--- FileWriter(File file),根据给定的file对象构造一个FileWriter对象。注意写入文件时目录下的同名文件会被覆盖。

--- FileWriter(File file,boolean append),根据给定的file对象构造一个FileWriter对象。若append为true则写入文件时目录下的同名文件不会被覆盖,在已有文件的末尾添加内容。

--- FileWriter(FileDescriptor fd),构造与某个文件描述符相关联的FileWriter对象。

--- FileWriter(String fileName),根据给定的文件名构造一个FileWriter对象。

--- FileWriter(String fileName,boolean append),根据给定的f文件名构造一个FileWriter对象。若append为true则写入文件时目录下的同名文件不会被覆盖,在已有文件的末尾添加内容。

注意文件名和文件对象的区别以及是否加true的区别!

代码示例:

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriterTest {
    public static void main(String[] args) {
        FileReader fr=null;
        FileWriter fw=null;
        try{
            File srcFile=new File("D:\\idea\\loafonajob\\untitled\\src\\hello.txt");//创建文件对象
            File destFile=new File("D:\\idea\\loafonajob\\untitled\\src\\hello1.txt");//创建文件对象
            fr=new FileReader(srcFile);//用文件对象创建FileReader
            fw=new FileWriter(destFile,true);//用文件对象创建FileWriter,加上指示true
            char[] cbuf=new char[5];
            int len;
            while((len=fr.read(cbuf))!=-1){
                fw.write(cbuf,0,len);
                System.out.println(cbuf);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if(fw!=null)
                    fw.close();
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                try{
                    if(fr!=null)
                        fr.close();
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

注意FileReader没有指示true,FileWriter有指示true,所以写入文件时不会覆盖,即每运行一次hello1.txt文件都会拷贝一次hello.txt。

注意一定要写清楚hello.txt文件和hello1.txt文件的路径。

hello.txt有以下内容:hello

hello1.txt初始为空,所以以上代码每运行一次hello1.txt文件内容都会被加上hello。

如果没有true,则每次代码运行hello1.txt都会被覆盖这样hello1.txt的内容只有hello不会随运行次数增加而增加。

用文件名创建FileReader和FileWriter,代码示例:

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

public class FileWriterTest {
    public static void main(String[] args) {
        FileReader fr=null;
        FileWriter fw=null;
        try{
            fr=new FileReader("D:\\idea\\loafonajob\\untitled\\src\\hello.txt");
            fw=new FileWriter("D:\\idea\\loafonajob\\untitled\\src\\hello1.txt",true);
            char[] cbuf=new char[5];
            int len;
            while((len=fr.read(cbuf))!=-1){
                fw.write(cbuf,0,len);
                System.out.println(cbuf);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if(fw!=null)
                    fw.close();
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                try{
                    if(fr!=null)
                        fr.close();
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

可以复制我的代码到idea去测试一下,注意文件路径要用自己电脑的文件路径,推荐文件格式为txt文件。idea可以创建文件,但要加上.txt后缀名,读取文件不要为空,写入文件可以为空。

总结:

java中的操作流的基本过程为以下四步:

1.声明流对象的引用变量,赋值为null。

2.在try中完成对输入流和输出流的操作。

3.在catch中对可能抛出的异常进行捕获处理。

4.在finally中关闭输入流和输出流。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值