java Swt文件对话框选择的文件太多?
如果我选择的文件太多(大约>;2500个文件),swt文件对话框将给我一个空的结果数组。清单显示了如何使用此对话框。如果我选择的声音文件太多,系统将显示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 楼答案
我看过FileDialog的源代码,恐怕有一个上限。一个32kB字节的缓冲区,用于所有以0结尾的文件名(如果我理解正确的话)
因此,通过计算值,如果filname字符串的中等大小约为12个字符,则正好达到了上限
因此,唯一的解决方法是分两个或更多步骤选择文件