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 要高![]()
java文件读写耗时比较
最新推荐文章于 2024-06-26 15:22:13 发布