swt文件对话框选择了太多文件?

时间:2010-06-10 08:35:29

标签: java file dialog swt

如果我选择了太多的文件(大约> 2500files),那么swt文件对话框会给我一个空的结果数组。该清单显示了我如何使用此对话框。如果我选择了太多的声音文件,syso将显示0.调试告诉我,在这种情况下,files数组是空的。有没有办法让这项工作?

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())

1 个答案:

答案 0 :(得分:2)

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

因此,使用您的值进行计算,如果您的filname字符串的中等大小大约为12个字符,那么您就完全点击了上边界。

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