【问题标题】:Swt file dialog too much files selected?Swt 文件对话框选择了太多文件?
【发布时间】:2010-06-10 08:35:29
【问题描述】:

如果我选择太多文件(大约 >2500 个文件),swt 文件对话框会给我一个空的结果数组。该清单向您展示了我如何使用此对话框。如果我选择了太多声音文件,syso 将显示 0。调试告诉我,在这种情况下文件数组为空。有什么办法可以完成这项工作吗?

FileDialog fileDialog = new FileDialog(mainView.getShell(), SWT.MULTI);
  fileDialog.setText("Choose sound files");
  fileDialog.setFilterExtensions(new String[] { new String("*.wav") });
  Vector<String> result = new Vector<String>();
  fileDialog.open();

  String[] files = fileDialog.getFileNames();
  for (int i = 0, n = files.length; i < n; i++) {
   if( !files[i].contains(".wav")) {
    System.out.println(files[i]);
   }

   StringBuffer stringBuffer = new StringBuffer();
   stringBuffer.append(fileDialog.getFilterPath());
   if (stringBuffer.charAt(stringBuffer.length() - 1) != File.separatorChar) {
    stringBuffer.append(File.separatorChar);
   }
   stringBuffer.append(files[i]);
   stringBuffer.append("");

   String finalName = stringBuffer.toString();
   if( !finalName.contains(".wav")) {
    System.out.println(finalName);
   }
   result.add(finalName);
  }
  System.out.println(result.size())

;

【问题讨论】:

    标签: java file dialog swt


    【解决方案1】:

    我查看了 FileDialog 源代码,恐怕有一个上限。所有以 0 结尾的文件名的 32kB 字节缓冲区(如果我理解正确的话)。

    因此,根据您的值计算,如果您的 filname 字符串的中等大小约为 12 个字符,那么您正好达到了上限。

    所以唯一的出路是分两步或多步选择文件。

    【讨论】:

    • 哦不! ;) 感谢您抽出宝贵时间。
    猜你喜欢
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 2011-04-05
    • 2011-04-29
    • 2015-11-29
    • 1970-01-01
    相关资源
    最近更新 更多