2010-06-10 106 views
1

如果我选择太多文件(大约> 2500文件),swt文件对话框会给我一个空的结果数组。清单显示了我如何使用这个对话框。如果我选择太多声音文件,syso将显示0.调试告诉我,在这种情况下,文件数组是空的。有什么方法可以完成这项工作吗?Swt文件对话框中选择了太多文件?

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

;

回答

2

我看过FileDialog的源代码,恐怕有一个上限。一个32kB字节的缓冲区,用于所有以0结尾的文件名(如果我理解正确的话)。

所以用你的值计算,如果你的filname字符串的中等大小约为12个字符,那么你已经命中了上限。

所以唯一的出路是在两个或多个步骤中选择文件。

+0

哦不! ;)感谢您抽出时间。 – InsertNickHere 2010-06-10 12:24:04

相关问题