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())
;
Я посмотрел исходный код FileDialog и боюсь, что там есть верхняя граница. Буфер 32 кБ байт для всех 0-терминированных имен файлов (если я правильно понял).
Так что, рассчитывая с вашими значениями, если средний размер ваших строк имен файлов составляет около 12 символов, то вы достигли именно этой верхней границы.
Поэтому единственный выход - выбирать файлы в два или более шагов.