从文件中提取图标需要太长时间

时间:2014-04-08 13:18:46

标签: java icons

我需要在程序中显示大量带文件名和图标的文件。 因此,我从文件中提取图标,但这需要很长时间。

我尝试了两种不同的方法来提取图标,但两者都非常慢(在我的情况下非常慢,因为我从网络驱动器获取文件)。

这是一个例子,我提取图标并计算图标数量(对文件/图标不做任何处理)

public class Main {
  public static void main(String[] args) {

    File folder = new File("C:\\Windows\\System32\\");
    File[] list = folder.listFiles();

    for(int i = 0; i< 3; i++) {
      long startTime = System.currentTimeMillis();
      System.out.println("Method 1: " + getIconNumber1(list)+ " Icons");
      long stopTime = System.currentTimeMillis();
      long elapsedTime = stopTime - startTime;
      System.out.println("Finished Method 1 in " + (float) elapsedTime / 1000 + "sec");

      long startTime2 = System.currentTimeMillis();
      System.out.println("Method 2: " + getIconNumber2(list)+ " Icons");
     long stopTime2 = System.currentTimeMillis();
      long elapsedTime2 = stopTime2 - startTime2;
      System.out.println("Finished Method 2 in " + (float) elapsedTime2 / 1000 + "sec");
      System.out.println("-----------------");
    }
  }

  private static int getIconNumber1(File[] list) {
    int nr = 0;
    for(File f : list) {
      try {
        ShellFolder sf = ShellFolder.getShellFolder(f);
        ImageIcon icon = new ImageIcon(sf.getIcon(true));
        nr++;
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    return nr;
  }

  private static int getIconNumber2(File[] list) {
    int nr = 0;

    for(File f : list){
      FileSystemView view = FileSystemView.getFileSystemView();
      Icon icon =  view.getSystemIcon(f);
      nr++;
    }
    return nr;
  }
}

有更快的方法吗?

0 个答案:

没有答案