Диалоговое окно файла Swt слишком много регистрирует выбранный?

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

;

1
задан InsertNickHere 10 June 2010 в 08:35
поделиться

1 ответ

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

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

Поэтому единственный выход - выбирать файлы в два или более шагов.

2
ответ дан 2 September 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: