java核心技术之IO流(三)FileReader和FileWriter

x33g5p2x  于2021-03-13 发布在 Java  
字(2.8k)|赞(0)|评价(0)|浏览(321)

简单的说明

从字符类型(char)的文件中读取和写入数据,我们要使用FileWriter和FileReader类来实现。

FileWriter和FileReader

FileWriter类

构造方法:
FileWriter(String filename)
FileWriter(File file)

关键方法:
write(int oneChar)
write(char[] buffer, int offset, int count)

FileReader类

构造方法:
FileReader(String filename)
FileReader(File file)

关键方法:
read()
read(char[] buffer, int offset, int count)

一个测试的Demo

定义三个方法:
(1)testFileReader方法—读取文件内容
FileReader的使用方法:

//1.创建一个输入字符文件   
//2.创建一个FileReader对象   
//3.调用read方法,读取内容数据   
//4. 关闭对应的流

(2)testFileWriter方法—-往文件写内容
FileWriter的使用方法:

//1.创建一个File文件   
//2.创建一个FileWriter对象   
//3.调用write方法写入数据   
//4.关闭对应的输出流

(3)copyByFileReaderFileWriter方法—-复制文件的方法

//1.定义输入和输出的文件   
//2.定义输入流和输出流的对象   
//3.执行复制操作   
//4.关闭对应的流,先关输出流,后关输入流
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileReaderFileWriter {

    //同时使用FileReader和FileWriter,实现二个文本文件的复制
    public static void copyByFileReaderFileWriter(String src,String des){       
        //2.定义二个字符流,输入流,输出流
        FileReader fr = null;
        FileWriter fw = null;
        try {
            //1.定义二个文件,一个输入,一个输出
            File fin = new File(src);
            File fout = new File(des);
            fr = new FileReader(fin);
            fw = new FileWriter(fout);          
            //3.复制操作
            char[] c = new char[20];
            int len;
            while((len = fr.read(c)) != -1){
                fw.write(c, 0, len);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            //4. 关闭对应的流,先关输出流,再关输入流
            if(fw != null){
                try {
                    fw.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(fr != null){
                try {
                    fr.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    //FileWriter使用样例---处理字符 
    public static void testFileWriter(){
        //2.定义一个FileWriter对象
        FileWriter fw = null;
        try {
            //1.定义一个输出字符文件
            File f1 =new File("hello_FileWriter.txt");
            fw = new FileWriter(f1);
            //3.输出操作
            String str = "我是中国人,我爱打dota,还爱搞机";
            fw.write(str);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }finally{
            //4.关闭对应的流
            if(fw != null){
                try {
                    fw.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    //FileReader使用样例---处理字符 
    public static void testFileReader(){        
        //2.定义一个FileReader
        FileReader fr = null;
        try {
            //1.定义一个输入字符文件
            File f1 =new File("hello.txt");     
            fr = new FileReader(f1);
            //3.读入操作
            char[] c = new char[10];
            int len;
            while((len = fr.read(c)) != -1){
                System.out.print(new String(c,0,len));
            }
        }catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            //4.关闭对应的流
            if(fr != null){
                try {
                    fr.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}

调用:

//FileReader使用样例---处理字符 
FileReaderFileWriter.testFileReader();  
//FileWriter使用样例---处理字符 
FileReaderFileWriter.testFileWriter();
//同时使用FileReader和FileWriter,实现二个文本文件的复制
FileReaderFileWriter.copyByFileReaderFileWriter("hello_FileWriter.txt", "hello_FileWriter_copy.txt");

参考资料:
1.FileWriter api文档
android_sdk_docs_offline/reference/java/io/FileWriter.html
2.FileReader文档
android_sdk_docs_offline/reference/java/io/FileReader.html
3.FileWriter与FileReader视频
http://edu.csdn.net/course/detail/805/10966?auto_start=1

相关文章