3-字符流

package com.io;

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

import org.junit.Test;

/**
 * 
 * fileReader和Writer每次读写两个字节,即一个字符,
 * Reader和writer只适用于文本文档,而对于音视频文件不适用,因为音视频文件最基本的单位是字节,
 * 用字符流是要出错的
 */
/**
 * 
 * @author Administrator
 *1、流的分类
 *(1)按照数据流向的不同,分为输入流和输出流
 *(2)按照处理数据单位的不同,分为字节流和字符流
 *(3)按照角色的不同,分为节点流(直接作用于文件,所有带File的InputStream OutputStream)、处理流(作用于节点流上面,提高效率)
 *2、IO体系
 *抽象基类                    节点流(即文件流)            缓冲流(处理流的一种)
 *InputStream   FileInputStream         BufferedInputStream
 *OutputStream  FileOutputStream         BufferedOutputStream
 *Reader        FileReader                BufferedReader
 *Writer        FileWriter                BufferedWriter
 *3、所有的处理流都作用于上面四种节点流,才能进行对文件操作
 *word文件,里面有可能有图片,只能用字节流
 *4、缓冲流快的原因:不事缓冲流,就读取一个字节就写,比较慢,而缓冲流就是读取好多字节才写一次,就像read和read(btye)方法
 */
public class FileReaderWriterTest {
    
    
    /*
     * 文本文件的复制
     */
    
    
    @Test
    public void copyFilebyReaderWriter(){
        FileReader fr = null;
        FileWriter fw = null;
        try {
            
            File fileRead = new File("hello.txt");
            File fileWrite = new File("hello_write.txt");
            fr = new FileReader(fileRead);
            fw = new FileWriter(fileWrite);
            
            char[] c = new char[10];
            int len;
            while((len = fr.read(c)) != -1){
                String str = new String(c, 0, len);
                
                System.out.println(str);
                System.out.println(len);
                fw.write(c, 0, len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
        
        try {
            fr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        try {
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        }
        
    }
    
    /**
     * 节点流读取文本文件
     */
    @Test
    public void fileReaderTest1(){
        FileReader fr = null;
        try {
            File file = new File("hello.txt");
            fr = new FileReader(file);
            char[] c = new char[4];//每次读4个字符
            int len;
            while((len = fr.read(c)) != -1){
                System.out.print(len);
                String str = new String(c, 0, len);//每次读4个字符
                System.out.println(str);
            }
        }  catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        
    }
}

 

posted @ 2015-12-07 15:06  浮白斋主人  阅读(160)  评论(0编辑  收藏  举报