0

我有两种单独的打开文件的方法。

第一个使用带有附加文件类型过滤器的 FileChoser。

JFileChooser inFileName = new JFileChooser();
 FileNameExtensionFilter filter = new FileNameExtensionFilter("PCF & TXT Files", "pcf", "txt");

inFileName.setFileFilter(filter);
    Component parent = null;
int returnVal = inFileName.showOpenDialog(parent);`

第二个使用 JOptionPane 但有一个循环来确保选择的目录存在

String filePath;
File directory;

do{
  filePath = JOptionPane.showInputDialog("please enter directory");
   directory = new File(filePath);

    if (directory.exists()==false){
     JOptionPane.showMessageDialog(null,"error with directory");
    }
 }while(directory.exists()==false);

我希望在这里两全其美。为了能够选择一个文件,使用文件过滤器并在该目录无效时循环该函数。

我试过在不同的地方切换变量名和各种函数,但我似乎无法让循环(“.exists”函数)工作。

4

1 回答 1

0

您只需要修改JFileChooser代码以使用循环。

JFileChooser inFileName = new JFileChooser();

File file;
boolean valid = false;
while (!valid) {
  int returnVal = inFileName.showOpenDialog(null);
  if (returnVal == JFileChooser.APPROVE_OPTION) {
    file = inFileName.getSelectedFile();
    valid = file.isDirectory();
  else {
    valid = returnVal == JFileChooser.CANCEL_OPTION;
  }
}

值得一提的是,使用这种东西可能会更好地实现;

jFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
于 2013-08-16T13:04:46.407 回答