博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jdk7 NIO的读取目录下所有图片(文件)
阅读量:6656 次
发布时间:2019-06-25

本文共 1605 字,大约阅读时间需要 5 分钟。

hot3.png

public class FileTest {
public void test() throws IOException{
long start = System.currentTimeMillis();
String path="G:\\图片";
Path p = Paths.get(path);
              //放文件对应的Path对象,可以通过toFile方法得到File对象 
              //这里没有语法错误,是jdk7的新特性 
List<Path> result = new ArrayList<>();
               //筛选.jpg,.png,.gif格式图片 
      try (DirectoryStream<Path> stream = Files.newDirectoryStream(p, "*.{jpg,png,gif}")) {
          for (Path entry: stream) {
              result.add(entry);
          }
                //同样是jdk7的新特性,避免庞大的catch块 
      } catch (DirectoryIteratorException | IOException e) {
          e.printStackTrace();
      }
    //制定hashmap的容量,防止rehashing的巨大开销
    Map<String,byte[]> map = Maps.newHashMapWithExpectedSize(200);
    BufferedInputStream b = null;
        ByteArrayOutputStream out = null;
        BufferedOutputStream o = null;
        String fileName = null;
        
    for(Path currentPath:result ){
      if(Files.isReadable(currentPath)){
       try{
       b = new BufferedInputStream(Files.newInputStream(currentPath, StandardOpenOption.READ));
       out = new ByteArrayOutputStream();
       o = new BufferedOutputStream(out);
       fileName = currentPath.getFileName().toString();
       System.out.println("============文件名=================="+fileName);
       byte[] transition = new byte[1024];
       int i = 0;
       while((i=b.read(transition))!=-1){
       o.write(transition);
       }
       map.put(fileName, out.toByteArray());
       }finally{
       if(b!=null){
       b.close();
       }
       if(o!=null){
        o.close();
       }
       }
      }else{
       throw new FileNotFoundException("读取图片出错");
      }
    }
    long end = System.currentTimeMillis();
             //265个图片858毫秒,由于上边我的hashmap定义的容量是200,所以中间经过了rehashing,因此时间其实可以更短
    System.out.println("时间差================"+(end-start));
}
u can do anything u set your mind to man!————Eminem ,《8 miles》

转载于:https://my.oschina.net/stillotherguy/blog/177341

你可能感兴趣的文章
专业实训题目需求分析
查看>>
MyEclipse定位class文件
查看>>
Wireshark的过滤规则
查看>>
bzoj1592[Usaco2008 Feb]Making the Grade 路面修整*
查看>>
ios中PagedFlowView的用法
查看>>
pcl_view简单使用
查看>>
[数据安全] 一个简洁快速的去数据特征的混淆算法(obfuscate)
查看>>
Android开源框架:初识ButterKnife
查看>>
[待补充]面向接口编程,数据驱动编程
查看>>
bzoj1502: [NOI2005]月下柠檬树
查看>>
拓扑排序
查看>>
100道java基础面试题
查看>>
docker基本使用
查看>>
java学习笔记 --- 异常
查看>>
正则化
查看>>
js练习——图片切换
查看>>
Android Studio 的 build 过程
查看>>
SQL Server查询数据库空间分配情况、数据库备份信息
查看>>
win8的几种关机方法。
查看>>
安装fastx_toolkit (gcc, pkg-config)
查看>>