我有两个单独的方法来打开文件。
第一个使用带有附加文件类型过滤器的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”函数)起作用。
答案 0 :(得分: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);