首页 > 代码库 > 最简单的iostream——文件复制

最简单的iostream——文件复制

/*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——文件复制