java文件读写耗时比较

来源:互联网 发布:正交矩阵的性质证明 编辑:程序博客网 时间:2024/05/17 08:21
public class ImageSaveServiceImpl implements ImageSaveService {    /**     * 图片读取(一次性读取)     * @param imgPath     * @return     */    @Override    public String saveImage(String imgPath) {        long startTime = System.currentTimeMillis();//开始读取时间        long endTime = 0L;        if(imgPath == null){            throw new DctException(ErrorCodeCore.DATA_NOT_NULL);        }        try {            FileInputStream inputStream = new FileInputStream(imgPath);//图片输入流            FileOutputStream outputStream = new FileOutputStream("D:/123.jpg");            int size = inputStream.available();//得到文件总大小            byte[] buff = new byte[size];            inputStream.read(buff);            outputStream.write(buff);            inputStream.close();            outputStream.close();            endTime = System.currentTimeMillis();//读取结束时间        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return "整体读取耗时:"+(endTime-startTime) + "ms";    }    /**     * 循环读取     * @param imgPath     * @return     */    @Override    public String saveImage2(String imgPath) {        long startTime = System.currentTimeMillis();//开始读取时间        long endTime = 0L;        if(imgPath == null){            throw new DctException(ErrorCodeCore.DATA_NOT_NULL);        }        try {            FileInputStream inputStream = new FileInputStream(imgPath);//图片输入流            FileOutputStream outputStream = new FileOutputStream("D:/456.jpg");            //int size = inputStream.available();//得到文件总大小            int length = 0;            byte[] buff = new byte[1024];            while ((length = inputStream.read(buff)) != -1){                outputStream.write(buff,0,length);            }            //inputStream.read(buff);            //outputStream.write(buff);            inputStream.close();            outputStream.close();            endTime = System.currentTimeMillis();//读取结束时间        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return "循环读取耗时:"+(endTime-startTime) + "ms";    }}下面是传入4.16M文件 第一种和第二种方法的时间对比,一般情况下文件不是很大的情况下整体读取速度比较快    文件很大的时候就不要用第一种方式了,容易溢出。    另外还可以用缓冲流读取 BufferedInputStream  一次读取一行效率比 FileInputStream 要高
原创粉丝点击