Files
timi-fx/src/main/java/com/imyeyu/fx/utils/FileSelector.java
2025-07-14 14:12:45 +08:00

104 lines
1.8 KiB
Java

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<File> 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;
}
}