zoukankan      html  css  js  c++  java
  • 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();
                }
            }
            
            
        }
    }
  • 相关阅读:
    Android安全研究经验谈
    论文相关笔记5
    论文相关笔记4
    论文相关笔记3
    论文相关笔记2
    论文相关笔记1
    朝鲜RedStar_OS_3.0安装图解
    Careerup上的简历模板
    冒泡、二分排序
    火狐插件
  • 原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/5026122.html
Copyright © 2011-2022 走看看