码迷,mamicode.com
首页 > 其他好文 > 详细

输入输出流的应用

时间:2019-08-16 23:15:14      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:ima   on()   exce   tst   art   pac   package   color   exception   

1、文件复制

用FileInputStream和FileOutPutStream实现文件的复制,此方法不能复制文件夹。

package pers.zhh.copy;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fi = new FileInputStream("M:\\数据库.zip");
        FileOutputStream fo = new FileOutputStream("M:\\数据库1.zip");
        int num = 0;
        long startTime = System.currentTimeMillis();
        while ((num = fi.read()) != -1) {
            fo.write(num);

        }
        fo.close();
        fi.close();
        long endTime = System.currentTimeMillis();
        System.out.println("执行此程序用了" + (endTime - startTime) + "毫秒。");
    }
}

技术图片

(2)缓冲数组:

package pers.zzz.copy;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyDemo1 {
    public static void main(String[] args) throws IOException {
        FileInputStream fi = new FileInputStream("M:\\网页设计.zip");
        FileOutputStream fo = new FileOutputStream("M:\\网页设计3.zip");
        byte[] buf = new byte[1024];
        int len = 0;
        long startTime = System.currentTimeMillis();
        while ((len = fi.read(buf)) != -1) {
            fo.write(buf, 0, len); // 将数组中的指定长度的数据写入到输出流中。
        }
        fo.close();
        fi.close();
        long endTime = System.currentTimeMillis();
        System.out.println("执行此程序用了" + (endTime - startTime) + "毫秒。");
    }

}

技术图片

在第一个方法中,一次只能读取一个数据字节,复制只有几M的数据花了7s时间,效率极低。而第二种采用缓冲数组的方式,复制接近1G的文件只花费了4s的时间,效率大大提升。

2、IO流的异常处理

package pers.zzz.copy;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyDemo1 {
    public static void main(String[] args) {
        FileOutputStream fo = null;
        FileInputStream fi = null;
        long startTime = System.currentTimeMillis();
        try {
            fi = new FileInputStream("M:\\网页设1计.zip");
            fo = new FileOutputStream("M:\\网页设计11.zip");

            byte[] buf = new byte[1024];
            int len = 0;

            while ((len = fi.read(buf)) != -1) {
                fo.write(buf, 0, len); // 将数组中的指定长度的数据写入到输出流中。
            }
        } catch (IOException e) {
            System.out.println(e.toString());
        } finally {
            if (fo != null) {
                try {
                    fo.close();
                } catch (IOException e) {
                    System.out.println(e.toString());
                    throw new RuntimeException();
                }
            }
            if (fi != null) {
                try {
                    fi.close();
                } catch (IOException e) {
                    System.out.println(e.toString());
                    throw new RuntimeException();

                }

            }

        }
        long endTime = System.currentTimeMillis();

        System.out.println("执行此程序用了" + (endTime - startTime) + "毫秒。");
    }
}

技术图片

 

输入输出流的应用

标签:ima   on()   exce   tst   art   pac   package   color   exception   

原文地址:https://www.cnblogs.com/zhai1997/p/11366386.html

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