有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

    因此,通过计算值,如果filname字符串的中等大小约为12个字符,则正好达到了上限

    因此,唯一的解决方法是分两个或更多步骤选择文件