SWT файл диалога слишком много файлов выбрано? - PullRequest
1 голос
/ 10 июня 2010

диалоговое окно файла SWT даст мне пустой массив результатов, если я выберу слишком много файлов (прибл.> 2500 файлов). Список показывает, как я использую этот диалог. Если я выберу слишком много звуковых файлов, сисо будет показывать 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())

;

1 Ответ

2 голосов
/ 10 июня 2010

Я посмотрел исходный код FileDialog и, боюсь, есть верхняя граница.32-килобайтный буфер байтов для всех имен файлов с 0-символами в конце (если я правильно понял).

Итак, при расчете с вашими значениями, если средний размер строк вашего имени файла составляет около 12 символов, то вы достигли именно этоговерхняя граница.

Таким образом, единственный выход - выбрать файлы за два или более шагов.

...