package com.imyeyu.fx.utils; import javafx.stage.FileChooser; import javafx.stage.Window; import java.io.File; import java.util.List; import java.util.Objects; /** * 文件选择器 * * @author 夜雨 * @version 2022-04-14 19:38 */ public class FileSelector { /** 选择器 */ private final FileChooser chooser; /** 默认构造器 */ public FileSelector() { this("./"); } /** * 构造文件选择器 * * @param path 默认路径 */ public FileSelector(String path) { chooser = new FileChooser(); File dir = new File(Objects.requireNonNullElse(path, "")); if (dir.exists()) { if (dir.isFile()) { chooser.setInitialDirectory(dir.getParentFile()); } else { chooser.setInitialDirectory(dir); } } else { chooser.setInitialDirectory(new File("./")); } } /** * 设置标题 * * @param title 标题 */ public void setTitle(String title) { chooser.setTitle(title); } /** * 添加格式限制 * * @param description 说明 * @param format 格式 */ public void addFilter(String description, String... format) { chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter(description, format)); } /** * 单选文件 * * @param window 依赖窗体 * @return 选择的文件 */ public File single(Window window) { return chooser.showOpenDialog(window); } /** * 多选文件 * * @param window 依赖窗体 * @return 选择的文件 */ public List multi(Window window) { return chooser.showOpenMultipleDialog(window); } /** * 保存文件 * * @param window 依赖窗体 * @return 选择的文件夹 */ public File save(Window window) { return chooser.showSaveDialog(window); } /** * 获取选择器 * * @return 选择器 */ public FileChooser getChooser() { return chooser; } }