Windows下JFileChooser输入仅空格时抛出InvalidPathException求助
解决JFileChooser输入纯空格文件名触发的InvalidPathException问题
核心解决方案:重写approveSelection方法提前拦截非法文件名
在用户点击确认按钮时,优先对输入的文件名做合法性校验,直接拦截纯空白或末尾带空格的情况,避免进入后续路径解析流程引发异常。
代码示例:
JFileChooser fileChooser = new JFileChooser() { @Override public void approveSelection() { File selectedFile = getSelectedFile(); if (selectedFile != null) { String fileName = selectedFile.getName(); // 拦截纯空白文件名 if (fileName.trim().isEmpty()) { JOptionPane.showMessageDialog(this, "文件名不能仅包含空格,请输入有效名称。", "无效文件名", JOptionPane.ERROR_MESSAGE); return; } // 保留原有末尾带空格的处理逻辑 if (fileName.endsWith(" ")) { JOptionPane.showMessageDialog(this, "文件名末尾不可包含空格,请修改后重试。", "无效文件名", JOptionPane.ERROR_MESSAGE); return; } } // 文件名合法,执行默认确认逻辑 super.approveSelection(); } };
方案说明
- 该方法在确认流程最前端拦截非法输入,从根源避免
java.nio.file.InvalidPathException触发; - 对于纯非法字符(如
???)的情况,JFileChooser原生UI会自动拦截,不会触发approveSelection方法,无需额外处理; - 相比扩展UI组件的方案,重写
approveSelection无需依赖内部私有成员,兼容性更强,适用于JDK 11及以上版本的Windows环境。
内容的提问来源于stack exchange,提问作者Koenigsberg
相关产品推荐
相关产品推荐

