码迷,mamicode.com
首页 > 移动开发 > 详细

最简单的iostream——文件复制

时间:2016-11-08 16:47:32      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:color   计算   file   目标   code   div   ring   new   内容   

/*Key:【入】指的是到内存里,【出】指的是到内存外*/
import java.io.*;

public class MyReadFile{
    public static void main(String[] args){
        try{
            /*第一步,定位数据源&&目标文件*/
            File f = new File("D:/lab_2/test.txt");
            File f2 = new File("D:/lab_2/test2.txt");
            
            /*第二步,建立输入&&输出管道*/
            FileInputStream fis = new FileInputStream(f);
            FileOutputStream fos = new FileOutputStream(f2);
            
            /*第三步,操作管道*/
            for(;fis.available() > 0;)
                fos.write(fis.read());
            
        }catch(Exception e){}
    }
}

 由于是一个字节一个字节的读写,在文件稍微大一点的时候(大于1MB)时,速度会非常的慢。

稍作修改即可,每次1000个字节读写。

       byte[] tmp = new byte[1000];
            for(;fis.available() > 0;)
                fis.read(tmp);
                fos.write(tmp);

据说2的n次方计算机处理效率会更快。

            byte[] tmp = new byte[8192];
            for(;fis.available() > 0;)
                fis.read(tmp);
                fos.write(tmp);                                    

 最后是标准版。

/*第三步,操作管道*/
            byte[] tmp = new byte[8192];
            //处理大部分内容
            int length = fis.available()/8192;
            for(int i = 0; i < length; i ++){
                fis.read(tmp);
                fos.write(tmp);
            }
            //处理最后剩下的内容
            int size = fis.read(tmp);
            fos.write(tmp, 0, size);
/*
最后一句改成:
int left_length = fis.availble();

fis.read(tmp, 0, left_length);

fos.write(tmp, 0, left_length);

也没有大问题。
*/

 

最简单的iostream——文件复制

标签:color   计算   file   目标   code   div   ring   new   内容   

原文地址:http://www.cnblogs.com/xkxf/p/6043223.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!