美文网首页
IO练习--字符文件copy

IO练习--字符文件copy

作者: 比轩 | 来源:发表于2016-11-06 13:32 被阅读11次

刚刚学习完java.io的部分东西,写一个文件复制的小练习,包括了异常的处理(没有考虑新复制出来的文件存在的情况,直接会被覆盖掉)。
code


package io;

/*
 * 一个文本文件复制的demo
 * 1.单字节复制
 * 2. 数组复制
 */

import java.io.*;

public class FileCopyTest {
    public static void main(String[] args) {
        long s = System.currentTimeMillis();
        FileCopyByByte("test.txt","test1.txt");
        
        long m = System.currentTimeMillis();
        FileCopyByBytes("test.txt","test2.txt");
        long e = System.currentTimeMillis();
        
        
        System.out.println("单字节复制用时:" + (m-s));
        System.out.println("数组复制用时:" + (e-m));
    }
    
    /*
     * 1.单字节复制 FileCopyByByte
     *  结果:7757ms
     */
    public static void FileCopyByByte(String fileAddress,String NewFileAddress){
        
        FileReader fr = null;
        FileWriter fw = null;
        
        try{
            
            fr = new FileReader(fileAddress);
            fw = new FileWriter(NewFileAddress);
            
            int len = 0;
            while((len = fr.read()) != -1){
                fw.write(len);
                fw.flush();
            }
            
        }catch(IOException e){
            throw new RuntimeException("文件复制失败");
            
        }finally{
            try{
                if(fw != null)
                    fw.close();
            }catch(IOException e){
                throw new RuntimeException("关闭复制文件资源失败");
            }
            try{
                if(fr != null)
                    fr.close();
            }catch(IOException e){
                throw new RuntimeException("关闭复制源资源失败");
            }

        }

    }
    
    /*
     * 1.数组复制 FileCopyByBytes
     * 结果:282ms
     */
    public static void FileCopyByBytes(String fileAddress,String NewFileAddress){
        
        //创建读取写入的对象
        FileReader fr = null;
        FileWriter fw = null;
        
        try{
            //初始化读取写入的对象
            fr = new FileReader(fileAddress);
            fw = new FileWriter(NewFileAddress);
            //len存取每次读取的字符数,ch存储每次读取的内容
            int len = 0;
            char[] ch = new char[1024];
            
            //while循环写入并flush
            while((len = fr.read(ch)) != -1){
                fw.write(ch,0,len);
                fw.flush();
            }
            
            
        }catch(IOException e){
            throw new RuntimeException("文件复制失败");
            
        }finally{  //在finally里面关闭所有资源,关闭失败直接扔一个runtime异常,让程序停止
            try{
                if(fw != null)
                    fw.close();
            }catch(IOException e){
                throw new RuntimeException("关闭复制文件资源失败");
            }
            try{
                if(fr != null)
                    fr.close();
            }catch(IOException e){
                throw new RuntimeException("关闭复制源资源失败");
            }

        }

    }
}

相关文章

  • IO练习--字符文件copy

    刚刚学习完java.io的部分东西,写一个文件复制的小练习,包括了异常的处理(没有考虑新复制出来的文件存在的情况,...

  • IO流之copy文件

  • 前端学习-javascript

    html 文件调用javascript html 文件 javascript 文件字符串练习 数组练习

  • 面试刷题12:zero copy是怎么回事?

    文件copy是java的io部分不可忽视的内容。 我是李福春,我在准备面试,今天的问题是: zero-copy...

  • 十二

    文件copy两种方式利用 java.io 类库,直接为源文件构建一个 FileInputStream 读取,然后再...

  • java_io 涉及到文件(txt,图片)上传,下载,读取文件,

    java_io 涉及到文件(txt,图片)上传,下载,读取文件,excel上传和下载 字符流和字节流 UML 字符...

  • java 四种io实现速度对比

    程序来源 复制大小约90MB的文件所需的时间(单位:毫秒) io stream copy:182797buffer...

  • 文件

    IO 从命令行输入字符输出ASCII值 读文件 二进制文件读取

  • VIM 字符串替换记录

    删除文件转义符和数据组合(导致字符编码问题 postgre copy 导入失败) : %s#[\\]\+\([0-...

  • IO

    IO文件读写 输入流输出流字节流字节输入流 InputStream字节输出流 OutputStream字符流字符输...

网友评论

      本文标题:IO练习--字符文件copy

      本文链接:https://www.haomeiwen.com/subject/pvxnuttx.html