Java 打开文件的最佳方式(并确保选择了文件)
我有两种不同的打开文件的方法 第一个使用带有附加文件类型筛选器的FileChoserJava 打开文件的最佳方式(并确保选择了文件),java,file-io,Java,File Io,我有两种不同的打开文件的方法 第一个使用带有附加文件类型筛选器的FileChoser JFileChooser inFileName = new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter("PCF & TXT Files", "pcf", "txt"); inFileName.setFileFilter(filter); Component parent = nul
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”函数)正常工作。您只需修改
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);
JFileChooser
的目的是选择文件,所以我肯定会选择前者。但是是否有可能创建所需的循环?当然有可能,但是使用JFileChooser
将不可能选择不存在的文件。(假设在访问选定的文件之前,您进行检查以确保返回值等于JFileChooser.APPROVE_选项
)现在回顾这个问题似乎没有必要。谢谢你的帮助。你为什么要这么做?您可以在您的JFileChooser
实例上调用setFileSelectionMode(仅限JFileChooser.DIRECTORIES)
。我是舒尔,我可以$mkdir mydir.txt
FileNameExtensionFilter
将对作为目录的文件返回false。@JeanWaghetti-刚刚选中,FileNameExtensionFilter
对目录返回true,而不考虑名称或扩展名。如果您只对选择目录感兴趣,为什么要使用FileNameExtensionFilter
,如果文件是目录,则返回TRUE。