牛客网Java刷题知识点之字节流练习之从A处复制文本文件到B处(FileReader、FileWriter )、复制文本文件的原理图解

  不多说,直接上干货!

CopyTextTest.java

package zhouls.bigdata.DataFeatureSelection.test;

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

/*
 * 需求:作业:将c盘的一个文本文件复制到d盘。
 * 
 * 思路:
 * 1,需要读取源,
 * 2,将读到的源数据写入到目的地。
 * 3,既然是操作文本数据,使用字符流。 
 * 
 */

public class CopyTextTest {
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {

        //1,读取一个已有的文本文件,使用字符读取流和文件相关联。
     FileReader fr = new FileReader("a.txt");
        //2,创建一个目的,用于存储读到数据。
     FileWriter fw = new FileWriter("b.txt");
        //3,频繁的读写操作。
        int ch = 0;
        while((ch=fr.read())!=-1){
            fw.write(ch);
        }
        //4,关闭流资源。     
        
        fw.close();
        fr.close();
    }
}

  还可以这样来写。

CopyTextTest.java

package zhouls.bigdata.DataFeatureSelection.test;

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

public class CopyTextTest{
    private static final int BUFFER_SIZE = 1024;
    /**
     * @param args
     */
    public static void main(String[] args) {
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader("a.txt");
          fw = new FileWriter("b.txt");
            
            //创建一个临时容器,用于缓存读取到的字符。
            char[] buf = new char[BUFFER_SIZE];//这就是缓冲区。 
            
            //定义一个变量记录读取到的字符数,(其实就是往数组里装的字符个数 )
            int len = 0;
            
            while((len=fr.read(buf))!=-1){
                fw.write(buf, 0, len);//从哪里开始写,写多少个
            }
            
        } catch (Exception e) {
            throw new RuntimeException("读写失败");
        }finally{
            if(fw!=null)
                try {
                    fw.close();
                } catch (IOException e) {
                    
                    e.printStackTrace();
                }
            if(fr!=null)
                try {
                    fr.close();
                } catch (IOException e) {
                    
                    e.printStackTrace();
                }
        }
    }
}

原文地址:https://www.cnblogs.com/zlslch/p/7577518.html